6
A
回答
2
因爲在UNIX上最常用的功能之一是在進程之間管道流 - 如果設置了CLOEXEC標誌(子進程不能繼承文件描述符,例如:STDOUT_FILENO),則不能這樣做。
並且不,你不能在exec之後使用繼承的文件描述符(例如:標準流)。只要知道它的值(它是一個整數),您也可以使用任何繼承的文件描述符。這個值經常傳遞給子過程的參數(相當多的UNIX程序做到這一點),或者你可以做到這一點使用你選擇的任何IPC(進程間通信)機制的任何其他方式。
3
文件描述符可以使用通過exec
調用;例如,Unix工具如何從shell獲得它們的標準輸入/輸出/錯誤fds。
關閉-ON-EXEC不是默認,因爲POSIX standard(和Unix傳統)要求相反的行爲:
文件描述符調用的進程映像開放應保持新的進程映像開放,除了對於那些設置了執行近距離執行標誌
FD_CLOEXEC
的人員。
0
我不介意對此做出更完整的回答,但很容易猜測它是爲了向後兼容。必須在某個時候推出關閉執行標誌。在此之前存在的代碼不知道它,並且除非改變,否則將無法正常工作。因此它默認關閉。
不幸的是,由於這個原因,一個守護進程分叉cgi可能會使監聽套接字打開,並且如果cgi沒有退出或關閉它,守護進程將無法重新啓動。所以我同意你的看法,這不是一個很好的默認設置。
相關問題
- 1. 爲什麼不是默認
- 2. 什麼是默認的PHP配置?
- 3. 爲什麼AllowPartiallyTrustedCallers不是默認值?
- 4. 爲什麼constexpr不是所有功能的默認設置?
- 5. require_once的默認位置是什麼?
- 6. 什麼是cmake的默認構建配置
- 7. 安裝MySQL和Homebrew。什麼是默認的database.yml配置連接?
- 8. 在ASP.NET的web配置中,cookieless的默認模式是什麼?
- 9. 什麼是默認的git core.askpass配置值?
- 10. 彈簧安全配置的默認過濾鏈是什麼?
- 11. 什麼是默認的Amazon EMR配置單元密碼?
- 12. 爲什麼默認的Apache XML配置文件解析?
- 13. iscroll的默認行爲是什麼。
- 14. performDefaultHandlingForAuthenticationChallenge的默認行爲是什麼:?
- 15. 爲什麼UIBarButtonItem默認是禁用的?
- 16. 爲什麼'infix`是默認的
- 17. ng-submit的默認行爲是什麼?
- 18. mousedown的默認行爲是什麼?
- 19. SQL:爲什麼varchar(50)是默認值?
- 20. 什麼是默認的MaxPoolSize?
- 21. UnityContainer:什麼是默認lifetimemanager
- 22. 什麼是Page.ResponseEncoding默認值?
- 23. 什麼是GOMAXPROCS默認值
- 24. 什麼是AdMob默認ID?
- 25. 什麼是ContinueWith默認值
- 26. 什麼是PHImageRequestOptionsResizeMode默認值?
- 27. WebRequest.Proxy - 什麼是默認值
- 28. 什麼是默認goroutine?
- 29. 什麼是默認的TransformerFactory?
- 30. 什麼是軌質量分配的默認行爲
除輸入/輸出/錯誤fds之外是否還有其他用例? – 2012-03-06 12:43:49
分叉不是可執行的,但。 – 2012-03-06 12:48:14
糟糕,腦屁。那麼,在現代炮彈中支持任意的fd重定向,這必須是有理由引入的;儘管我從未發現自己有用。 – 2012-03-06 12:48:34