Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 08 Jan 2020 21:30:00 -0800
From:      "Ronald F. Guilmette" <rfg@tristatelogic.com>
To:        freebsd-questions@freebsd.org
Subject:   Re: Independence of file descriptor flags across forks (or lack thereof)
Message-ID:  <8433.1578547800@segfault.tristatelogic.com>
In-Reply-To: <20200108161544.76f64dd6eb0d1edb134a5b0f@sohara.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message <20200108161544.76f64dd6eb0d1edb134a5b0f@sohara.org>, 
Steve O'Hara-Smith <steve@sohara.org> wrote:

>	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.

All I can say is that the kernel implementors of both FreeBSD and also
Linux seem to agree with your viewpoint.  I myself am not persuaded
that the two file descriptors that exist after a fork should behave any
differently from the two in your example above, but they do, so I guess
I just have to deal with it.


Regards,
rfg



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8433.1578547800>