【发布时间】:2023-04-04 06:52:01
【问题描述】:
我有个小问题不知道怎么解决。
我有一个程序,它基本上由标准输入中的输入命令。它只是一直运行,直到接收到特定的字符串,然后执行其他操作。好的,我无权访问控制这些输入的代码,但我想添加一个新命令。
我的想法如下:
。在我的程序中创建一个管道
。分叉进程
。其中一个继续执行原始程序,而另一个从 stdin 读取。
。将继续正常执行的进程的标准输入重定向到管道。
。继续从标准输入监听的部分,检查接收到的内容,如果不是新命令,只需重定向管道(以便旧命令仍然有效)
。如果是新命令,发送特定信号。
我一直在考虑在 c++ 中使用 pipe/fork/dup2 来实现它,但我不知道如何在继续执行的过程中发送和捕获信号。我怎么能在 C++ 中做到这一点?你们有什么建议吗?这可能有效吗?
【问题讨论】:
-
为什么不用简单的命令行:
myprog | prog_being_commanded? -
确实如此。如果您想要更简单的命令,请使用脚本进行管道处理。