Вопрос по file-io, c, linux – Как я могу определить, открыт ли файл где-либо еще в C на Linux?

7

Как я могу сказать, если файл открыт в C? Я думаю, что более технический вопрос заключается в том, как я могу получить количество ссылок на существующий файл и определить с помощью этой информации, безопасно ли его открывать.

Идея, которую я реализую, - очередь файлов. Вы сбрасываете некоторые файлы, мой код обрабатывает файлы. Я не хочу начинать обработку, пока производитель не закроет дескриптор файла.

Все делается в Linux.

Спасибо, Chenz

Ваш Ответ

7   ответов
0

0

5

Save to temp then rename. Either write your files to a temporary filename or directory, when you're done writinh, rename it into the directory where your app reads them. Renaming is atomic, so when the file is present you know it's safe to read. Maybe a variant of the above , when you're done writing the file foo you create an empty file named foo.finished. You look for the presence of *.finished when processing files. Lock the files while writing, that way reading the file will just block until the writer unlocks it. See the flock/lockf functions, they're advisory locks though so both the reader and writer have to lock , and honor the locks.
Error: User Rate Limit Exceeded Crazy Chenz
0

0

3
Error: User Rate Limit Exceeded
0

generally you can't do thatError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Похожие вопросы