2011-05-19 73 views
14

fork()函數可用於複製多線程進程。如果是這樣,所有的線程都將完全相同,如果不是,爲什麼不呢。如果複製不能通過fork來完成,有沒有其他函數可以爲我做?多線程叉

+0

你見過[這個問題](http://stackoverflow.com/questions/1235516/fork-in-multi-threaded-program)?或[這一個](http://stackoverflow.com/questions/1073954/fork-and-existing-threads)?基本上只有'fork()'線程在子進程中存在。你想達到什麼目的? – Zecc 2011-05-19 10:17:21

+0

其實我試圖爲可靠執行創建一個複製進程,其中複製進程將通過執行相同的代碼來驗證主進程的輸出。 – MetallicPriest 2011-05-23 13:20:45

回答

13

不,孩子只會有一個線程。分叉線程不是微不足道的。 (請參閱此文章Threads and fork(): think twice before mixing them以獲得良好的概述)。

我不知道克隆進程及其所有線程的任何方式,我認爲這在Linux上是不可能的。

+2

+1,非常翔實的博客文章。 – DarkDust 2011-05-19 10:11:29

-1

叉創建了自己的線程(S),拷貝文件描述符和虛擬內存的新進程。

子進程不會與他的父親共享相同的內存。所以這是絕對不一樣的。