linux的fork和系统资源

时间:2012-06-24 21:12:48

标签: linux resources fork

  

可能重复:
  Are file descriptors shared when fork()ing?

假设我在linux中有以下代码:

int main()
{
   FILE* f = fopen("file.txt", "w");
   fork();
   fwrite("A", 1, 1, f);
   fclose(f);
   return 0;
}

我从文档中了解fork,它是当前进程的副本。它也会复制内存的状态,因此* f在两个实例中应该相等。但是系统资源会发生什么,例如文件句柄?在这个例子中我用写意图打开文件,所以只有一个实例可以写入文件,对吧?哪个实例实际写入文件?谁应该进一步关注文件句柄,并调用fclose()?

1 个答案:

答案 0 :(得分:1)

两个进程都得到了一个句柄。两者都可以写,但会共享当前的偏移量。两者都应关闭,每个都关闭自己的手柄。