Как обнаружить, что никто не пишет в файл в Linux? - PullRequest
5 голосов
/ 04 января 2011

Мне интересно, есть ли простой способ узнать, есть ли у другого объекта определенный файл, открытый для записи?У меня нет времени, чтобы постоянно использовать iNotify, чтобы дождаться, пока какой-нибудь писатель закончит писать.Мне нужно сделать периодическую проверку.Спасибо.

Ответы [ 4 ]

3 голосов
/ 04 января 2011

Что именно вы делаете, когда у вас «нет времени постоянно использовать iNotify»? Во-первых, вы должны использовать флаг IN_CLOSE_WRITE, чтобы iNotify просто делал одно уведомление, когда файл закрывается после записи. Использовать его постоянно бессмысленно. Во-вторых, если ваше время очень важно, я думаю, что запись в файл - не ваше идеальное решение. Вы управляете первым писателем? Вам нужно беспокоиться о том, чтобы что-то еще записывалось в файл после того, как первый писатель закрыл его?

1 голос
/ 04 января 2011

lsof LiSts Открыть файлы. fuser также работает аналогично (File USER), сообщая вам, какой пользователь использует файл.

См .: http://www.refining -linux.org / archives / 23/16-Введение в lsof-and-fuser /

0 голосов
/ 05 января 2011

Вы не можете сделать это легко в общем случае, и даже если бы вы могли, вы не можете использовать эту информацию ненормативно (см. Комментарий caf).

Итак, я бы сказал, перепроектируйте ваше приложение, чтобы вам не нужно было об этом знать.

0 голосов
/ 05 января 2011

Поскольку вы, похоже, хотите использовать интерфейс в стиле библиотеки, а не систему, см. ofl-lib.c . (Это на самом деле просто удаление всего, кроме основной функции из самой программы ofl .)

...