Você não pode ter o kernel apenas informando sobre uma mudança em um determinado caminho. As razões são um pouco sutis:
-
No Linux, um objeto de arquivo existe independentemente de qualquer nome que ele possa ter. Os nomes dos arquivos são, na verdade, atributos de seus diretórios contidos, e um único arquivo pode ser chamado por vários nomes (veja, hardlinking).
-
O kernel precisa ter algo para anexar objetos de inotificação; ele não pode anexar um objeto a um nome de caminho desde que um nome de caminho não seja um objeto de sistema de arquivos real; você precisa se conectar ao diretório pai ou ao arquivo que o caminho descreve. Mas você não pode anexar ao arquivo, porque você está assistindo para ver se um arquivo com um determinado nome é criado, não muda para um determinado arquivo.
Existe um desempenho notável para colocar um relógio em um diretório muito ativo? Não tenho certeza de quão ativo você é; dezenas de arquivos por segundo, centenas, milhões?
De qualquer forma, eu evitaria access
: sempre será uma corrida. Um arquivo poderia ser criado e removido entre as chamadas para access
, e chamar access
em um loop muito apertado seria lento, e é o tipo de problema que o inotify
foi projetado para resolver.