I am calling a command via system(command) call. But no other code is executed after this system() call.
Why is so? I thought, system() would create a child process for “command” execution and my program (parent of “command”-child) will continue executing code after that.
Am I not understanding system() correctly?
code:
printf("before \n");
system("tail -f filename"); /* long lived - never returns */
printf("after \n");
Here, I do not see after getting printed ever.
The
system(3)function causes your process to wait for the completion of the child.Edit 0:
You have to use the classic pair of
fork(2)andexecve(2)for what you want to do. You might also check whether your C library provides POSIXspawn(3).Edit 1:
Look into
waitpid(2)to keep the parent around.