c++ - 通过linux终端将数据发送到另一个进程的stdin

标签 c++ linux bash pipe

我一直在尝试将数据发送到正在运行的进程的标准输入。这是我所做的:

  1. 在终端中,我启动了一个 c++ 程序,它只读取一个字符串并将其打印出来。代码摘录:

    while (true) {
        cin >> s;
        cout << "I've just read " << s << endl;
    }
    
  2. 获取运行程序的PID

  3. 我去 /proc/PID/fd/
  4. 我执行 echo text > 0

结果:text 出现在程序运行的终端中。请注意,不是 I've just read text,而是 text。 我做错了什么,我应该怎么做才能打印出 'I've just read text'

最佳答案

当您启动 C++ 程序时,您需要确保其输入来自管道而不是终端。你可以使用 cat | myapp 来做到这一点。运行后,您可以将应用程序的 PID 用于 echo text >/proc/PID/fd/0

关于c++ - 通过linux终端将数据发送到另一个进程的stdin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37424497/

相关文章:

c++ - 如何调试 C++ 内存错误?

linux - Asterisk MSSQL实时计费的最佳解决方案

python - Ansible - "NameError: name ' urllib 2' is not defined"

linux - 关于 Bash 脚本中的 Switch Case

c++:我应该在什么时候开始使用 "new char[N]"与静态缓冲区 "char[Nmax]"

c++ - 为什么 C++ 标准指定在具有混合符号的二进制运算中将有符号整数转换为无符号?

linux - 如何将密码传递给bash脚本

c - 使用 fgets() 从文件中读取多行并存储到指针数组

c++ - 将变体数组转换为 std::tuple

linux - grep 永远不会返回任何东西,除非我放一个 * 或 .最后 - 为什么?