0
我一直在閱讀有關文件描述符以及操作系統如何使用C系統調用「open()」來管理文件併爲它們提供訪問權限,並且我有幾個問題:文件描述符表和系統調用
- 文件描述符表:它只是一個所有進程共享的大數據結構(比如說有兩個進程:進程A和進程B,它們是否有指向OS的文件描述符表的指針),還是操作系統爲每個進程創建一個全新的文件描述符數組?
- 其他編程語言可以調用哪些系統調用?例如,我知道使用C/C++可以使用操作系統接口(fork(),close(),open(),execl()等輕鬆地調用系統調用),但Java呢?我不記得有一種調用這些函數的方法。它究竟如何在那裏工作? JVM只是將我的代碼翻譯(需要翻譯什麼)到上面的系統調用?那麼Python的其他高級編程語言呢?
- 如果我在打開系統調用close()後不關閉文件會造成什麼危害?
謝謝。
美麗,謝謝!這是非常豐富的。 –
3.此外,您需要檢查close()的返回值以獲得所有可能錯誤的通知(尤其是套接字,但文件寫入也可能在刷新時失敗)。 – ninjalj
是的,但請注意'close(fd)'失敗的錯誤語義有點令人困惑。如果close()失敗,fd仍然打開或不打開? ['close()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html)的POSIX描述的第二段說明狀態是未指定的。目前還不清楚文件描述符是關閉還是仍然打開,以及是否打開另一個關閉它的嘗試是否會以同樣的方式失敗,等等。這並不是說你不應該注意,特別是如果你的數據是珍貴的,但這並非完全無關緊要。 –