launchd
também deve monitorar alterações em arquivos (diretamente) em diretórios em WatchPaths
.
Tente salvar este plist como ~/Library/LaunchAgents/test.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>test</string>
<key>ProgramArguments</key>
<array>
<string>say</string>
<string>a</string>
</array>
<key>WatchPaths</key>
<array>
<string>~/Documents/</string>
</array>
</dict>
</plist>
Em seguida, execute launchctl load ~/Library/LaunchAgents/test.plist
e modifique algum arquivo em ~/Documents/
. O programa deve ser executado mesmo se você modificar o arquivo sem executar um salvamento atômico ou mesmo se o tempo de modificação de ~/Documents/
não for alterado.
Observe que launchd
não monitora alterações nos subdiretórios dos diretórios observados. A expansão Tilde funciona nos argumentos para WatchPaths
por padrão, mas não há como ativar a expansão de nomes de arquivos. ( EnableGlobbing
só se aplica a ProgramArguments
.)