PREV INDEX NEXT

Author: Stan Eisenstat
Subject: Re: [Cs323] global files
Date: Friday, 13 Nov 2020, 07:15:22


    > Message Posted By: Unknown
    >
    > How does the sytem keep track of how much of the file has been read so
    > far? For example, if one process reads part of the file, then the file
    > would be "advanced" by the number of bytes read by the first process and a
    > second process would not be able to read those. Is that kept track in the
    > global file table in some sort of struct?

The following is a simplified description.

Each file descriptor is an index into a table that is
stored in the system side of a process.  The entry at
that index is a pointer to an entry in a global file
table that is stored outside the process.  That entry
includes the index of the next byte in the file to read
or write.

When a process calls read() (write() is similar), the
index of the next byte to read is advanced.  If another
process has a file descriptor that refers to the same
entry in the global file table (e.g., as the result of
a fork()), its next read will start at the new position,
not the old one.

--Stan-
PREV INDEX NEXT