文件描述符和进程的关系



文件描述符是相对于进程的还是相对于操作系统的?我想知道的是如果在c程序中我打开一个文件这个文件被赋了一个文件描述符比如103,那么当我在其他c程序中打开一个文件描述符为103的文件时我引用的是同一个文件还是其他文件?

每个进程将拥有自己的文件描述符表。它是特定于处理器的,如果你改变fd,它将只对该进程有效,它不会影响系统中的其他进程。一旦进程终止,fd将被丢弃。

如果我从打开该文件的进程派生出一个新进程怎么办?

当前文件描述表,即fork系统调用前的表将被继承到子进程。

文件描述符是通过open()创建的进程特定的。但是您可以通过其他进程使用open()多次打开同一个文件。通过这种方式,每个进程将为同一个文件拥有自己的文件描述符。文件描述符和其他资源一起通过fork传递到子进程。这意味着子进程不需要重新打开父进程已经打开的同一个文件。

相关内容

  • 没有找到相关文章

最新更新