【问题标题】:File descriptor and process relation文件描述符和进程关系
【发布时间】:2015-09-28 07:06:58
【问题描述】:

文件描述符是相对于进程还是相对于操作系统?我基本上想知道的是,如果在 c 程序中打开一个文件,并且该文件被分配了一个文件描述符值,比如说 103,所以当我在其他 c 程序中打开一个文件描述符为 103 的文件时,我指的是相同的文件还是其他文件?

【问题讨论】:

  • 文件描述符是特定于进程的。
  • 如果我从打开该文件的进程中派生一个新进程怎么办?
  • 每个进程的文件描述符是 still 的,fork 发生的复制只是使它看起来好像不是。

标签: c file operating-system file-descriptor


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      相关资源
      最近更新 更多