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描述的第二段说明状态是未指定的。目前还不清楚文件描述符是关闭还是仍然打开,以及是否打开另一个关闭它的尝试是否会以同样的方式失败,等等。这并不是说你不应该注意,特别是如果你的数据是珍贵的,但这并非完全无关紧要。 –