Independence of file descriptor flags across forks (or lack thereof)
Steve O'Hara-Smith
steve at sohara.org
Wed Jan 8 16:15:52 UTC 2020
On Wed, 08 Jan 2020 07:30:12 -0800
"Ronald F. Guilmette" <rfg at tristatelogic.com> wrote:
> File status flags and file access modes are associated with the
> file description and do not affect other file descriptors that
> refer to the same file with different open file descriptions.
>
> Why else would the authors of this standard have included such stilted
> and, admittedly, imprecise language as that if they were NOT attempting
> to say exactly what I have said?
OK I can explain this:
fd1 = open ("/some/file", O_RDONLY);
fd2 = open ("/some/file", O_RDWR);
Now I have two file descriptors referring to the same file with
different file access modes. I can set flags on fd1 and fd2 independently.
That is what the precisely phrased paragraph above is referring to. Each
file descriptor (with values like 3) refers to a table which identifies the
kernel data structure representing the open file. It is that kernel data
structure that holds such things as the file position, mode, flags etc.
Now if I fork this process then the table of open file descriptors
gets copied so now two processes are sharing the same kernel data
structures.
--
Steve O'Hara-Smith <steve at sohara.org>
More information about the freebsd-questions
mailing list