我用C寫的主程序,我需要它來啓動另一個並行處理, 我使用的函數有沒有辦法可以啓動另一個程序,而無需做fork()?
system("./server");
的問題是,這個過程包含一個while(1)循環,因此不會再回來到主要應用程序...
有沒有辦法,我可以啓動程序,而不必做一個fork()?
謝謝!
我用C寫的主程序,我需要它來啓動另一個並行處理, 我使用的函數有沒有辦法可以啓動另一個程序,而無需做fork()?
system("./server");
的問題是,這個過程包含一個while(1)循環,因此不會再回來到主要應用程序...
有沒有辦法,我可以啓動程序,而不必做一個fork()?
謝謝!
當然 - 只是這樣做:
system("./server &");
在UNIX/Linux的fork()
(通常由exec()
folowed)是創建一個新的進程的唯一途徑。
所有其他方式(system()
,一些操作系統有spawn()
)真的使用fork()
。
所以fork()
只是不可避免的(對於UNIX/Linux)。
您需要指定第二個進程需要執行的操作 - 尤其是它與主調用方共享的內容。它是否從「啓動器」獲得輸入?它是否必須返回一個值或一組值?兩者之間是否存在潛在的鎖定或競爭問題?啓動程序能否在子程序完成之前要求它退出? – 2010-02-24 10:32:50
fork()是什麼問題? – mouviciel 2010-02-24 10:33:21
我想這是因爲fork不可用。 – 2010-02-24 10:34:33