2011-11-23 56 views
0

如何在C中啓動新進程?我嘗試了fork(),但我希望在新過程中調用一些函數。我做了一些谷歌搜索,但找不到更好的信息:fork(),vfork(),exec()clone()。如果您允許另一個快速問題,我該如何啓動新線程?執行新進程中的函數

+4

我不明白的問題。 'fork'克隆了當前進程,顯然你可以調用'fork'之後你想要的任何函數。要創建線程,請詳細瞭解pthreads(posix線程庫),特別是'pthread_create'函數。你真的應該閱讀一本關於Unix編程的好書! –

+0

你能給我任何例子fork()函數調用嗎? – Nimit

+1

幾乎所有使用fork的C代碼都在調用某個函數。所以我不明白這個問題。請告訴我們你到底做了什麼代碼! –

回答

3

檢查維基百科上的example;基本上,在你分叉之後,你必須檢查PID來了解你是否在父或子進程中。

if (pid == 0) { // child process 
    call_child_function(); 
} else { //parent process 
    call_parent_function(); 
} 
+0

感謝您的回覆,但是我怎樣才能將功能調用到新進程? – Nimit

+2

@Nimit:請閱讀提供的鏈接或至少fork()文檔。他已經回答說:檢查返回的pid,你會知道你是在父母還是子女的過程中。然後使用'if'條件應該足以在每種情況下調用您可能想要的任何函數。 – jweyrich

+0

你是什麼意思「調用一個函數到新進程」???它對我來說沒有什麼意義......(在新進程的fork之後,你的代碼可以引用的任何函數都可以被調用)!!! –

1

要開始一個新的子進程,你可以使用我popen3()功能

+0

我不確定它是否有助於原始海報。我相信他不明白'fork'是什麼! –

+0

我想我的想法是,這個經過測試的代碼會爲他做,所以他不需要了解它... – Will

+0

你是對的Will。非常感謝。 – Nimit