【发布时间】:2018-01-18 08:29:09
【问题描述】:
我使用 perl 的 open3 来运行命令,自定义命令的行为就像一个 shell,它接受输入并显示输出并等待另一个输入直到给出退出
现在我要使用相同的命令并用 C 语言编写它,我们是否有类似于 C 或 C++ 中的 IPC::Open3 的东西?
【问题讨论】:
-
pipe() 和 fork() 可以做同样的事情,但当然要麻烦得多。首先阅读Safe Pipe Opens in perldoc perlipc,这是对这些概念的比较高级的讨论。然后,您可以将相同的概念转移到 Posix/C。
-
是的,我在看管道和叉子,但我无法让它工作,而且它超出了我的理解范围,我想这需要一些时间来克服它
-
在 C 中还是在 C++ 中?这是不一样的。 Windows 还是 Linux?
-
简而言之:
system是最简单的,但可能不安全(并且不能提供Open3的所有功能);popen更好,还有fork+exec。我不确定“IPC::Open3”是否仅表示 Linux(不知道它是否可移植),但是:在 Windows 上有用于此的 API,首先是 CreateProcess,然后是ShellExecute(可能更多) -
如果您可以使用
boost,那么boost::process可能值得一看。