system() 调用行为
我正在使用 system() 调用来启动“tail -f”。
我看到的一件事是,调用 tail 需要 2 个进程(我可以在 ps 中看到): 1) sh -c 尾部文件名 2) tail filename
正如手册页所述:system() 通过调用 /bin/sh -c 命令来执行 command 中指定的命令。我想,过程1)是不可避免的,对吗?
我只是想知道是否可以将进程数从 2 个减少到 1 个。
提前致谢。
I am using system() call to start "tail -f".
One thing I saw was that, invocation of tail takes 2 processes (I can see in ps):
1) sh -c tail filename
2) tail filename
As man page says: system() executes a command specified in command by calling /bin/sh -c command. I guess, process 1) is inevitable, correct?
I was just wondering if I can reduce number of processes from 2 to 1.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最好使用 fork()/exec() 来启动进程。
system()
调用 shell,因此您应该注意传递给它的内容。It's better to use
fork()/exec()
to launch processes.system()
invokes the shell, so you should take care with what you pass to it.系统总是执行 sh -c 命令。如果您只需要一个进程,请执行 system("exec tail -f")。
system always does sh -c command. If you want only one process, do system("exec tail -f").