Shell-Script

fork()、exec() 和 system() 都錯了嗎?

  • May 1, 2016

我理解為什麼如果我編寫通過呼叫來執行 shell 命令的 C 程式碼可能不是最佳實踐,system()而且使用起來更好execfork但是後來一位非常有經驗的 C 程序員告訴我,通過分叉和執行來製作 shell 是錯誤的,但是他從來沒有回答為什麼。你能告訴我嗎?我的程式碼可能會誤解我的自定義新 shell用途forkexec執行可以在提示符下輸入的管道。

他的意思是最好的shell也實現了程序/bin嗎?我引用了經驗豐富的 C 程序員,但我不明白他為什麼告訴我這個。

恕我直言,在你的 shell 中使用分叉和管道的 C 程式碼是完全錯誤的。

不呼叫 shell 直接執行程序的兩個主要原因是:

  • 性能:從 C 程序呼叫的大多數程序可能比 shell 小得多,這使得它們啟動得更快。
  • 環境控制:處理要處理的附加環境變數層可能更複雜,配置和故障排除。

引用自:https://unix.stackexchange.com/questions/280310