Несколько файловых дескрипторов в одном файле, C - PullRequest
7 голосов
/ 19 апреля 2010

У меня есть многопоточное приложение, которое открывает и читает один и тот же файл (не пишет). Я открываю разные файловые дескрипторы для каждого потока (но все они указывают на один и тот же файл). Затем каждый поток читает файл и может закрыть его и снова открыть, если достигнут EOF. Это нормально? Если я выполняю fclose () для файлового дескриптора, влияет ли это на другие файловые дескрипторы, которые указывают на тот же файл?

Ответы [ 3 ]

4 голосов
/ 10 июля 2013

Для систем Linux вам не нужно несколько файловых дескрипторов, чтобы сделать это. Вы можете использовать один файловый дескриптор и использовать pread для атомарного выполнения операции поиска / чтения без изменения дескриптора файла вообще.

3 голосов
/ 19 апреля 2010

Все в порядке. Вы можете открывать в любое время один и тот же файл, и каждый дескриптор файла будет независимым друг от друга.

0 голосов
/ 19 апреля 2010

Это должно работать нормально, если каждый поток имеет свой собственный дескриптор файла. Поскольку вы упоминаете использование fclose(), это означает, что вы также используете fopen() в каждом потоке, и каждый поток влияет только на свою собственную переменную FILE *.

Есть ли проблема?

...