Два файловых дескриптора из разных процессов указывают на одну и ту же запись в таблице открытых файлов

Ядро Unix представляет открытые файлы, используя три структуры данных:Descriptor table,File table, иv-node table.
Когда процесс дважды открывает файл, он получает два разных дескриптора в descriptor table, две записи в file table(. так что они имеют разные позиции в одном и том же файле ), и они оба указывают на одну запись в v-node table.
А дочерний процесс наследует родительский процесс descriptor table, поэтому ядро ​​поддерживает один descriptor tableдля каждого процесса соответственно. Но два дескриптора из разных процессов указывают на одну и ту же запись в open file table.
Так

  1. Когда дочерний процесс читает файл, изменится ли смещение того же файла в родительском процессе?
  2. Если 1 верно для двух процессов, есть ли удобный способ получить тот же эффект forkв одном файле?Это означает, что два процесса совместно используют информацию о позиции (смещении )в одном и том же файле.
  3. Есть ли способ разветвления, чтобы оба процесса имели совершенно несвязанные таблицы, например, два несвязанных процесса, только если они открывали одни и те же файлы.
7
задан WiSaGaN 4 July 2012 в 08:06
поделиться