Linux の任意の場所にあるファイルにエコーするとecho > /tmp/file
、実行中のプロセスが応答します。これはファイル パイプ経由の IPC ですか?
これは、実行中のプロセスが常にファイルを開いて読み取ることを意味しますか? しかし、ファイルストリームは独自のプロセスによってロックされているため、ファイルを書き込むにはどうすればよいでしょうか?
ファイルを使用して別のプロセスと通信する場合は、を参照してくださいman fifo
。
ここでは最初の行だけを報告します。
NAME
fifo - first-in first-out special file, named pipe
DESCRIPTION
A FIFO special file (a named pipe) is similar to a pipe, except that it
is accessed as part of the file system. It can be opened by multiple
processes for reading or writing. When processes are exchanging data
via the FIFO, the kernel passes all data internally without writing it
to the file system. Thus, the FIFO special file has no contents on the
file system; the file system entry merely serves as a reference point
so that processes can access the pipe using a name in the file system.
これがあなたに必要なものだと思います。
ただそれをバッファとして考えてください。読み取り用と書き込み用の両方で、異なるプロセスで開く必要があります。読み取り中のプロセスは、書き込みプロセスが書き込みを行わなくなるまでブロックされます。書き込みプロセスが書き込みを終了したら、ファイルを閉じます。これは、読み取りプロセスがバッファーを空にし始めるための緑色のライトです。これはFIFOであるため、最初に書き込まれる行が最初に読み取られる行になります。その後、書き込みプロセスはそれを再び開くことができ、彼らは再び開始します。
を使用してFIFOを作成できますmkfifo
。を見てくださいman mkfifo
。