你不能用
system
来做这个。来自(BSD)的
man 3 system
。
呼叫过程 等待 让shell完成命令的执行,忽略SIGINT和SIGQUIT,并阻止SIGCHLD。
因此,你的应用程序将被阻止,直到完成或终止启动的程序。
你可以通过使用
fork
/
exec
启动你的程序来获得你想要的行为。- 人工页
here
,以及
here
.这就是
system
在幕后所做的事情。你将启动子进程并在你的应用程序中保持控制。
Using
fork
, you'll get a process id for your launched process,以及using that you can e.g. terminate the program using
kill
- man page
here
- 并重新启动该程序。
找一找
fork
/
exec
的例子,这个网站上可能有很多。