【发布时间】:2017-02-03 06:30:20
【问题描述】:
我在 Linux 中有一个可执行文件,可以与 stdin/stdout 交互。我正在尝试用 C++ 编写一个程序,该程序可以交互地调用该程序,将命令发送到它的标准输入,并捕获它的标准输出。
我真的很困惑。我不想分叉我的程序(是吗?)。我确实希望我的程序能够启动“客户端”、发送数据、获取输出、发送更多数据、获取更多输出……然后关闭“客户端”。
附:是的,我确定以前有人问过这个问题,但我花了几个小时真的摸不着头脑——可能没有使用正确的关键字。
【问题讨论】:
-
你想用低级系统调用来写这个还是你可以使用库?一种选择是使用libexpect
-
@MarkPlotnick 这是一个个人项目,所以任何能让这件事变得更容易的方法都是可行的。
-
@MarkPlotnick 实际上是的,这真的很好用!我已经切换到使用 tcl8.6 中的 exp_popen() 调用。这将打开一个进程并返回一个文件句柄,我可以像任何其他文件一样读取/写入它。
标签: c++ linux shell interactive