程序调用system()后程序没有执行任何操作

har*_*ari 2 c unix process

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

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

我不正确理解system()吗?

码:

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

在这里,我没有看到打印后.

Nik*_*sov 8

system(3)函数使您的进程等待子进程完成.

编辑0:

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

编辑1:

考虑waitpid(2)到保持父左右.

  • 最简单的事情就是系统("tail -f filename&") (3认同)