我正在尝试使用 popen 执行(fork off)一个命令,我看到的是,还有一个额外的 sh -c "my_command process"
也在那里。
我想最大限度地减少进程数量,那么是否可以摆脱它?
ps 输出:
root@home% ps awux | grep my_command
root 638 0.0 0.1 040 1424 ?? I 10:12PM 0:00.00 sh -c my_command /home/war
root 639 0.0 0.0 608 932 ?? S 10:12PM 0:00.01 my_command /home/war
阅读手册页后,我知道这就是 popen() 的工作原理。
上述问题的答案由@R提供..
我的要求是这样的,我需要将命令的输出转储到文件中并逐行读取该文件并处理输出。这就是我使用 popen 的原因,因为它返回文件中的输出。我可以通过任何 exec 调用来实现这一点吗?
最佳答案
您应该听取那些建议您不要使用 popen
的好心人的建议 - 这很糟糕。但是,对于您遇到的问题,有一个简单的解决方案 - 将 exec
添加到传递给 popen
的命令行的开头。也就是说,而不是:
popen("my_command /home/war", ...
用途:
popen("exec my_command /home/war", ...
关于c - popen 创建一个额外的 sh 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6742635/