我的问题是对这个问题的扩展:popen creates an extra sh process
动机:
1)我的程序需要创建一个子进程,该子进程对文件执行tail
操作。我需要逐行处理输出内容。这就是我使用popen
的原因,因为它返回FILE *。我可以轻松获取单行内容,进行处理并打印出来。
popen
的一个问题是你无法获得子进程(tail命令)的pid。
2)在子进程完成之前,我的程序不应该退出。因此,我需要执行wait
;但是没有pid,我无法执行。
如何同时实现两个目标?
一种可能的(折中的)解决方案:执行execvp("tail -f file > tmpfile"),然后继续读取tmpfile。但我不确定这个解决方案有多好。
close(pipefd[0])
之前关闭管道吗?还是在kill
之前? - hari