检查stdin中的特定字符串

时间:2010-07-10 13:51:57

标签: c++ pipe signals

我有一个小问题,我不知道如何解决。

我有一个基本上由stdin中的输入命令的程序。它只是一直运行,直到收到一个特定的字符串,然后做其他事情。好的,我无法访问控制这些输入的代码,但我想添加一个新命令。

我的想法如下:

。在我的程序中创建一个管道

。分叉过程

。其中一个继续使用原始程序,而另一个从stdin读取。

。将正常执行的进程的stdin重定向到管道。

。继续从stdin监听的部分,检查接收到的内容,如果不是新命令,只需重定向管道(以便旧命令仍然有效)

。如果是新命令,则发送特定信号。

我一直在考虑用c ++中的pipe / fork / dup2来实现它,但我不知道如何在继续执行的过程中发送和捕获信号。我怎么能用c ++做到这一点?你们有什么建议吗?这可能有用吗?

1 个答案:

答案 0 :(得分:0)

您的程序应该执行以下操作:

  1. stdin读取数据。
  2. 搜索新命令字符串。如果找到了,就做点工作。
  3. 将所有已处理的输入发送到stdout(或除了提取的命令数据之外的所有数据,具体取决于您的需要)
  4. 它应该像这样执行:

    $ cat input.txt | my_prog | other_prog

    您的程序未处理的所有输入都将转到现有程序,因为它来自input.txt(当然,数据源可以是任意的,不一定是文件)。