【发布时间】:2014-05-08 23:23:01
【问题描述】:
我一直在阅读有关文件描述符以及操作系统如何管理文件并为使用 C 系统调用“open()”的进程提供对它们的访问权限的信息,我有几个问题:
- 文件描述符表:它只是一个所有进程共享的大数据结构(例如,假设有两个进程:进程 A 和进程 B,它们是否有指向操作系统的文件描述符表的指针),还是操作系统为每个进程创建一个全新的文件描述符数组?
- 还有哪些其他编程语言可以调用系统调用?例如,我知道使用 C/C++ 您可以使用操作系统接口轻松调用系统调用(fork()、close()、open()、execl()... 等等),但是 Java 呢?我不记得有调用这些函数的方法。它在那里究竟是如何工作的? JVM 是否只是将我的代码翻译(需要翻译的内容)到上述系统调用?那么其他高级编程语言(如 Python)呢?
- 如果我在使用系统调用 close() 打开文件后不关闭文件会有什么危害?
谢谢。
【问题讨论】:
标签: c file operating-system system-calls