0
我需要運行一個命令,但不要鎖定我的應用程序,直到它退出爲止,就像system()
函數一樣。這個怎麼做?任何幫助非常感謝。提前致謝。如何運行命令並不等待應用程序退出?
我需要運行一個命令,但不要鎖定我的應用程序,直到它退出爲止,就像system()
函數一樣。這個怎麼做?任何幫助非常感謝。提前致謝。如何運行命令並不等待應用程序退出?
使用fork()
來創建一個新進程,而exec*()
用新應用程序替換它。
pid_t pid;
if ((pid = fork()) < 0)
...fork failed...
else if (pid == 0)
{
...create command line in array of char pointers argv...
...sort out I/O -- redirect stdin from /dev/null?...
execvp(argv[0], argv);
...report exec failed on stderr...
_exit(126);
}
...parent process...gets on with life...
請注意,如果父進程退出,它會發送一個SIGHUP給孩子。假設您希望孩子繼續跑步,孩子應該通過使用信號處理來忽略SIGHUP,或者使用nohup來運行程序。 – cdarke