我正在寫一個小程序,它有點是一個服務器,它產生了它的客戶端程序(本地,不在網絡上)並在它們之間做有趣的事情。雖然我使用的主要操作系統是Linux,但我希望這可以在包括Windows在內的其他操作系統上運行。有fork
和exec
這是做這項工作,但是當我通過cygwin將程序移植到Windows時,我不希望在cygwin中實現蹩腳的fork
,實際上它調用CreateProcess
並將當前進程的內存區域複製到新的使用帶共享內存互斥的setjmp
/longjmp
進行處理,所有這些以便被另一個程序(exec
)替換。在閱讀cygwin的FAQ頁面時,我發現了spawn.h
及其posix_spawn
,它在windows中基本上看起來像CreatePorcess(Ex)
。它看起來像一個新的功能(...我的意思不是原來的UNIX系統功能之一),所以我有一些問題。「posix_spawn」的能力
實施得好,廣泛嗎? (我在網上看到一些帖子,這是不是他/她的系統下的定義。)
我可以期待通過使用
posix_spawn
,而不是在Linux中fork
/exec
任何性能的改善或惡化?爲什麼
posix_spawn
不太爲人所知,比fork
/exec
雖然是自1999年以來標準少用?