5

Linux の任意の場所にあるファイルにエコーするとecho > /tmp/file、実行中のプロセスが応答します。これはファイル パイプ経由の IPC ですか?

これは、実行中のプロセスが常にファイルを開いて読み取ることを意味しますか? しかし、ファイルストリームは独自のプロセスによってロックされているため、ファイルを書き込むにはどうすればよいでしょうか?

4

1 に答える 1

7

ファイルを使用して別のプロセスと通信する場合は、を参照してください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

于 2012-06-16T10:01:22.243 に答える