我一直在尝试将数据发送到正在运行的进程的stdin。这是我的工作:

  • 在终端中,我启动了一个c++程序,该程序只读取并打印一个字符串。代码摘录:
    while (true) {
        cin >> s;
        cout << "I've just read " << s << endl;
    }
    
  • 我得到正在运行的程序
  • 的PID
  • 我转到/proc/PID/fd/
  • 我执行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

    10-08 07:56
    查看更多