2012-05-01 45 views
0

我需要運行一個命令,但不要鎖定我的應用程序,直到它退出爲止,就像system()函數一樣。這個怎麼做?任何幫助非常感謝。提前致謝。如何運行命令並不等待應用程序退出?

+1

請注意,如果父進程退出,它會發送一個SIGHUP給孩子。假設您希望孩子繼續跑步,孩子應該通過使用信號處理來忽略SIGHUP,或者使用nohup來運行程序。 – cdarke

回答

7

使用fork()來創建一個新進程,而exec*()用新應用程序替換它。

2
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...