c - popen 创建一个额外的 sh 进程

标签 c exec process popen ps

我正在尝试使用 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/

相关文章:

c - 同一用户不同进程读写文件时文件模式的影响

php - 在 PHP 中调用 LLVM-GCC

python - 如何在 cython 中处理任意大的数字?

c - 出现错误 "int&"

C Programming w/Pipes 奇怪地打印到 STDOUT

c# - 进程和可执行文件名

ios - iOS中所有进程的父进程是什么?

c - 我正在为斐波那契数列编写代码,在系列的第 44 项之后,我开始在系列中得到负值,我不知道为什么?

go - 带有 cp 的 exec.Command 退出,状态为 1

php - 如何使用来自 php 网页的 expect 脚本?