gpt4 book ai didi

c - system() 调用行为

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:30 26 4
gpt4 key购买 nike

我正在使用 system() 调用来启动“tail -f”。

我看到的一件事是,tail 的调用需要 2 个进程(我可以在 ps 中看到):1) sh -c 尾文件名2) 尾文件名

正如手册页所说:system() 通过调用/bin/sh -c 命令执行 command 中指定的命令。我想,过程 1) 是不可避免的,对吗?

我只是想知道是否可以将进程数从 2 个减少到 1 个。

提前致谢。

最佳答案

最好使用fork()/exec() 来启动进程。 system() 调用 shell,因此您应该注意传递给它的内容。

/* Untested code, but you get the idea */
switch ((pid = fork())) {
case -1:
perror("fork");
break;
case 0:
execl("/usr/bin/tail", "tail", "-f", filename);
perror("execl");
exit(1);
default:
wait(pid);
...
}

关于c - system() 调用行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com