我正在通过系统(命令)调用来调用命令。但是在这个 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/