私はこれが可能であるかどうかはわかりませんが、私はしばしばそれを考えていて、いくつかの解決策は私を驚かせました。 whileループ内で私が欲しいん余分なプロセスを作成せずにスクリプトでinotifywait -mを使用しますか?
#!/bin/bash
EVENTS="CREATE,CLOSE_WRITE,DELETE,MODIFY,MOVED_FROM,MOVED_TO"
inotifywait -e "$EVENTS" -m -r ~/Desktop/testing | \
while true; do
read TMP
echo "${TMP}" >> ~/Desktop/eventlog
done
注:それは二つのプロセスを作成せずに次のスクリプトと同等のものを作成することが可能である(この場合には、パイプがあるので2つのプロセスが作成されている明確です)イベントにアクセスする
パイプが必要なのは、あるプロセスで書き込みを行い、別のプロセスから読み込む必要があるからです。しかし、おそらくトリックが存在するでしょうか?
ああ、これは私が達成しようとしていたことです。興味深いことに、私はそれをどのように実装することができるのだろうか。私は彼らが新しいプロセスを作成するのではなく、新しいスレッドを作成すると思いますか?もし誰かが執筆していて、読んでいるのであれば、2つの "何か"があるはずです。私は2つのスレッドを推測する。 –
いいえ、2つの新しいプロセスをフォークして待機するのではなく、新しいプロセスで最初のコマンドと現在のプロセスでループを実行するだけです。 – chepner