2010-02-24 66 views
0

我用C寫的主程序,我需要它來啓動另一個並行處理, 我使用的函數有沒有辦法可以啓動另一個程序,而無需做fork()?

system("./server"); 

的問題是,這個過程包含一個while(1)循環,因此不會再回來到主要應用程序...

有沒有辦法,我可以啓動程序,而不必做一個fork()?

謝謝!

+0

您需要指定第二個進程需要執行的操作 - 尤其是它與主調用方共享的內容。它是否從「啓動器」獲得輸入?它是否必須返回一個值或一組值?兩者之間是否存在潛在的鎖定或競爭問題?啓動程序能否在子程序完成之前要求它退出? – 2010-02-24 10:32:50

+1

fork()是什麼問題? – mouviciel 2010-02-24 10:33:21

+0

我想這是因爲fork不可用。 – 2010-02-24 10:34:33

回答

5

當然 - 只是這樣做:

system("./server &"); 
5

在UNIX/Linux的fork()(通常由exec() folowed)是創建一個新的進程的唯一途徑。

所有其他方式(system(),一些操作系統有spawn())真的使用fork()

所以fork()只是不可避免的(對於UNIX/Linux)。

相關問題