程序在调用system()之后不执行任何操作

问题描述 投票:2回答:2

我正在通过system(command)调用来调用命令。但是,在此system()调用之后,没有其他代码被执行。

为什么会这样?我以为,system()将为“命令”执行创建子进程,而我的程序(“命令”的父项-子)将在此后继续执行代码。

我是否无法正确理解system()?

代码:

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

在这里,我从未见过打印后。

c unix process
2个回答
8
投票

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

编辑0:

您必须使用经典的system(3)fork(2)对来进行操作。您还可以检查您的C库是否提供POSIX fork(2)

编辑1:

查看execve(2)以保持父级的周围。


0
投票

您必须fork(2)才能继续执行代码。


0
投票

如果您要在特定时间后退出命令,如何使用“超时”命令:

例如:system(“超时5您的命令在这里”); //如果未完成,则在5秒内杀死命令

© www.soinside.com 2019 - 2024. All rights reserved.