我有一个小问题,我不知道如何解决。
我有一个基本上由stdin中的输入命令的程序。它只是一直运行,直到收到一个特定的字符串,然后做其他事情。好的,我无法访问控制这些输入的代码,但我想添加一个新命令。
我的想法如下:
。在我的程序中创建一个管道
。分叉过程
。其中一个继续使用原始程序,而另一个从stdin读取。
。将正常执行的进程的stdin重定向到管道。
。继续从stdin监听的部分,检查接收到的内容,如果不是新命令,只需重定向管道(以便旧命令仍然有效)
。如果是新命令,则发送特定信号。
我一直在考虑用c ++中的pipe / fork / dup2来实现它,但我不知道如何在继续执行的过程中发送和捕获信号。我怎么能用c ++做到这一点?你们有什么建议吗?这可能有用吗?
答案 0 :(得分:0)
您的程序应该执行以下操作:
stdin
读取数据。stdout
(或除了提取的命令数据之外的所有数据,具体取决于您的需要)它应该像这样执行:
$ cat input.txt | my_prog | other_prog
您的程序未处理的所有输入都将转到现有程序,因为它来自input.txt(当然,数据源可以是任意的,不一定是文件)。