_spawnl(...)和Createprocess(...) API在windows編程有什麼區別?windows編程中的_spawnl和Createprocess(...)API有什麼區別?
這些API在創建過程行爲方面有什麼不同。
_spawnl(...)和Createprocess(...) API在windows編程有什麼區別?windows編程中的_spawnl和Createprocess(...)API有什麼區別?
這些API在創建過程行爲方面有什麼不同。
CreateProcess
是用於創建進程的本機API。
spawnl
是C運行時的一部分,帶有類POSIX語義。它僅支持一小部分功能(提供命令行參數),並作爲圍繞CreateProcess
的封裝來實現。與此同時,spawnl
已棄用_spawnl
。
CreateProcess
的自然操作模式可與spawnl
的P_NOWAIT
模式相媲美,但具有附加功能(環境,標準手柄安全信息等)。
注意,P_OVERLAY
模式spawnl
不是那種直接在Windows下的所有支持(沒有Unix類fork
+ execve
成語,進程重新創建,不分叉)。這個功能就是通過產生一個新的過程並終止原來的過程來實現的,而不是通過替換過程。
另請注意,_spawnl並不總是從參數中正確構建命令行。如果您的參數包含特殊字符,則最好使用CreateProcess。 –
CreateProcess是五十馬力的鏈鋸。 _spawnl()是黃油刀。這就像Pink Floyd的歌曲,小心Eugene的斧頭。 –