【发布时间】:2020-03-25 11:27:13
【问题描述】:
(在 Linux 上运行并通过命令行运行的所有程序)所以我希望能够从我自己的 C 程序中运行已编译的 C 程序,然后能够读取该已编译 C 程序的输出并拥有我的 C 程序为该程序提供输入。 (还假设我只有另一个 C 程序的编译版本)。我知道 system() 函数,但我不确定是否可以使用它来读取已编译程序输出的内容,然后提供我自己的输入。
【问题讨论】:
-
forkpipedup和exec是您应该研究的函数。 -
一个简单的解决方案是将被调用程序的输出重定向到一个文件并在调用程序中处理该文件。
-
注意,如果你只需要一个的方式,有
popen。当您需要双向使用时,没有简单的解决方案 - 但要注意由于标准输入和/或标准输出上的大量数据导致的死锁。另请注意,某些程序访问 终端 而不是 stdin/stdout。expect程序可能对您有用。
标签: c linux command-line system