Files

文件操作和流程

  • January 14, 2019

兩個不同的程序(父程序和子程序)是否有可能看到同一個文本文件並對其進行操作?

我完成了這個,但我必須使用 fopen() 在兩個程序中打開文件。我的期望是其中一個程序打開文件,而另一個程序可以查看和操作它。

從我的 OpenBSD 系統fork(2)手冊中(我的重點):

子程序擁有自己的父描述符副本。這些描述符引用相同的底層對象,例如,文件對像中的文件指針在子程序和父程序之間共享,因此lseek(2)子程序中的描述符可以影響後續程序read(2)write(2)父程序。shell 也使用此描述符複製來為新創建的程序建立標準輸入和輸出以及設置管道。

這意味著如果您在分叉子程序之前在父程序中打開一個文件,兩個程序將打開同一個文件。但是,如果孩子從文件中讀取,那麼父母的文件指針也將被移動。

要在兩個程序中分別訪問文件*,*您必須分別在兩個程序中打開文件。

如果呼叫fork()在父程序中打開文件,子程序將不會打開該文件,反之亦然。

引用自:https://unix.stackexchange.com/questions/428043