誰かが端末で次のことを実行するとします。
echo 'start working' > /etc/.example
これを実行すると、サンプルプログラムは「動作を開始」します。
UNIX(-like)システムでは、そのようなものはどのように実装されますか?また、この種の動作は何と呼ばれますか?
これを行う一般的な方法は2つあります。
1つは、書き込まれるファイルが実際にはプログラムが読み取っている名前付きパイプであり、他の種類の入力ストリーム(ネットワークソケットや標準入力など)からの場合と同じように「作業開始」文字列を受け取ることです。 。
もう1つ(Linuxに固有)は、書き込まれるファイルが通常のファイルであり、プログラムがinotify(または古いシステムではdnotify)を使用してファイルの変更を監視していることです。ファイルが変更されたことを示すinotifyイベントを受信すると、その内容を読み取り、「作業開始」文字列を取得します。
これらの方法はどちらも、問題のプログラムがすでにバックグラウンドで実行されている(そして何もしていない)必要があることに注意してください。たとえば、上記の2つのことのいずれかを実行するプログラムの起動を担当するバックグラウンドプロセスがない限り、この方法でプログラムを起動する方法は実際にはありません。