Linux iNotify один выстрел и проблема маски события - PullRequest
2 голосов
/ 18 мая 2009

Я пытаюсь использовать iNotify в linux rhel5, ядро ​​2.6.18, glibc 2.5-18. Я не определил событие как один выстрел, но по какой-то причине он ведет себя так, как будто я это сделал. В результате мне приходится заново добавлять часы после каждого события. Кто-нибудь когда-либо использовал iNotify? Другая проблема состоит в том, что маска, возвращаемая в объекте события, содержит только один флаг: IN_ONE_SHOT.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2012

Вероятно, что inotify неявно удаляет часы, потому что файл удаляется. На поведение тонко ссылается страница руководства (см. Раздел о событии IN_IGNORED). Вы можете проверить, происходит ли это, проверив, установлен ли флаг IN_IGNORED в inotify_event, заполненном вашим вызовом на read.

См. Также inotify delete_self при изменении и сохранении файла , почему файл может быть удален без вашего ведома или действия во время того, что вы считаете просто модификацией.

0 голосов
/ 18 мая 2009

Напишите наименьший возможный пример и протестируйте его. Если это демонстрирует поведение, о котором вы говорите, добавьте его в свой вопрос. Если он ведет себя нормально, добавьте немного кода и протестируйте снова. Повторяйте, пока не воспроизведете ошибку или не заработаете свой код. Часто я нахожу, что создание игрушечной программы точно говорит мне, что я делаю неправильно, чего я не мог видеть в более крупной программе.

...