基於Unix系統的命令exec(const char * c)和system(const char * c)究竟有什麼區別?unix中的exec()和system()的區別
兩者都可以從C程序調用來執行系統調用。這兩個人有什麼不同嗎?
基於Unix系統的命令exec(const char * c)和system(const char * c)究竟有什麼區別?unix中的exec()和system()的區別
兩者都可以從C程序調用來執行系統調用。這兩個人有什麼不同嗎?
exec
用指定的程序替換您的過程。你的程序已經完成,並且不會繼續運行。
spawn
啓動一個新進程(可能通過首先使用fork
),並在程序繼續執行時運行指定的程序。
system
啓動一個新進程(可能通過首先使用fork
),並在程序等待時運行指定的程序。一旦孩子退出,你的程序繼續。
exec
將執行一個文件,而system
將執行一個shell併爲其提供參數。
維基百科:
它(系統)在功能EXEC /產卵家族的不同在於,代替將參數傳遞給一個執行對象,一個單一的字符串被傳遞到系統的外殼,通常是POSIX shell,/ bin/sh -c。
http://en.wikipedia.org/wiki/System_%28C_standard_library%29
它不會執行一個控制檯,只是一個shell。 – glglgl
固定。謝謝。 –
'system'也殼下運行命令,如在'/ bin/sh的-c 「命令」'。如果該命令包含有趣的字符,則會有很大差異 – Nemo
@Nemo:好點 –