【发布时间】:2011-10-08 07:07:20
【问题描述】:
我的问题是这个问题的扩展:popen creates an extra sh process
动机:
1) 我的程序需要创建一个对文件执行tail 的子程序。我需要逐行处理输出。这就是我使用 popen 的原因,因为它返回 FILE *。我可以轻松地获取单行,做我需要做的事情并打印出来。
popen 的一个问题是你没有得到孩子的 pid(在我的例子中是 tail 命令)。
2) 我的程序在其子程序完成之前不应退出。所以我需要做wait;但是没有pid,我做不到。
如何实现这两个目标?
一个可能的(kludge)解决方案:执行 execvp("tail -f file > tmpfile") 并继续阅读该 tmpfile。不过,我不确定这个解决方案有多好。
【问题讨论】: