2012-07-10 38 views
1

我正在尋找不同的fork實現方法的細節。下面的鏈接被稱爲分叉實施, http://doxygen.scilab.org/5.3/d0/d8f/forkWindows_8c_source.html。這個fork實現是使用ntdll導出的ZwXXX函數。在窗口中分叉

我可以在vs2012,windows 7 -64位機器上編譯這個。但在測試中,我沒有得到預期的輸出。在分叉時,會創建新的子進程,但是此進程會立即返回以恢復其掛起的主線程。它不會再次調用fork調用。有沒有人試圖實現Windows的叉?這段代碼中缺少什麼?過去一週我一直在研究不同的fork實現。請幫忙。

+0

這個fork實現按照預期的方式與win-32 Release版本一起工作。但是win-64構建和調試版本失敗。 – Princi 2012-07-10 14:18:14

+0

它很棒,你花了一個星期研究fork實現。再花6個月。你將成爲叉星。 – 2012-09-23 08:46:39

回答

0

我也有過類似的問題,而移植叉API Windows和我使用的臨時解決方案:在子進程後叉

  • 補充睡眠()。
  • 通過ctrl + F5運行父進程。
  • 然後將子進程附加到VS調試器。
  • 繼續使用F5鍵進行調試。
  • 我們也可以將父進程附加到VS調試器。

有沒有更好的解決方案來調試分叉子進程。

+0

fork是一個OS依賴函數。它是一種UNIX構造,它本身不存在於Windows中。它在UNIX和Linux中也有幾個變體,這使得它的行爲不可預知。當你說make fork在windows上工作時,不僅不瞭解windows內核,你沒有意識到fork的行爲在unix上不一致,那麼你究竟想要做什麼呢? – 2012-09-21 06:53:19