c - 调用 system() 后程序不执行任何操作

标签 c unix process

我正在通过系统(命令)调用来调用命令。但是在这个 system() 调用之后没有其他代码被执行。

为什么会这样?我想,system() 会为“命令”执行创建一个子进程,之后我的程序(“命令”-child 的父进程)将继续执行代码。

我没有正确理解 system() 吗?

代码:

printf("before \n");
system("tail -f filename");       /* long lived - never returns */
printf("after \n");

在这里,我打印后看不到。

最佳答案

system(3)函数会导致您的进程等待子进程完成。

编辑0:

你必须使用经典的 fork(2)execve(2)为了你想做的事。您还可以检查您的 C 库是否提供 POSIX spawn(3) .

编辑 1:

查看 waitpid(2)让 parent 留在身边。

关于c - 调用 system() 后程序不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6552712/

相关文章:

c - SIOCADDRT 的 IPv6 等价物是什么?

java - 获取 windows/linux 中进程的启动时间?

unix - 如何杀死容器内的进程? Docker 顶部命令

linux - fork 和僵尸进程

c - 如何解析 MDNS 响应?

c - 结构体指针和指针char数组malloc数组

c - 如何使用GTK C库?

c - 如果不操纵它如何改变值(value)?

javascript - NodeJS 中的流

macos - fswatch + rsync 替代方案或更好的实现