Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 通过文件的进程间通信_Linux_Process_Ipc - Fatal编程技术网

Linux 通过文件的进程间通信

Linux 通过文件的进程间通信,linux,process,ipc,Linux,Process,Ipc,当我回显到Linux中某些任意位置的文件中时,即echo>/tmp/file,一些正在运行的进程会响应。这是通过文件管道的IPC吗 这是否意味着运行的进程总是打开要读取的文件?但是,既然文件流被自己的进程锁定,那么如何写入文件呢 如果您想使用一个文件与另一个进程通信,您应该查看手动fifo 我将在这里报告第一行: NAME fifo - first-in first-out special file, named pipe DESCRIPTION A FIFO sp

当我回显到Linux中某些任意位置的文件中时,即
echo>/tmp/file
,一些正在运行的进程会响应。这是通过文件管道的IPC吗


这是否意味着运行的进程总是打开要读取的文件?但是,既然文件流被自己的进程锁定,那么如何写入文件呢

如果您想使用一个文件与另一个进程通信,您应该查看
手动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,所以写的第一行将是读的第一行。然后,书写过程可以再次打开它,然后它们再次开始


您可以使用
mkfifo
创建FIFO。查看
manmkfifo

一些正在运行的进程的响应-哪些进程以及如何响应?正在运行的进程始终打开文件-哪个文件?文件流被锁定了-谁这么说?我的意思是运行进程。如果我打开一个文件,它可能会被锁定。例如,打开的文件不可能更改其内容,因为其他一些进程正在使用它。如果普通计算机用户试图删除或修改文件,则会一直收到此消息。这意味着,该文件实际上不是一个文件,但它只是文件系统中可见的一个管道(由某些进程拥有)?在较低的级别上,这是否意味着该文件只是对内存块的引用,并且当该内存块有一些数据到达时,它将由拥有该内存块的进程读取。“命名的管道仅仅是为了人与人之间的互动,不是吗?”补充了一个简短的解释。但是我没有得到关于人类互动的部分。。。我们不是在说软件吗??:PWell,我们得到命名管道,我们可以手动写入文件,即类型<代码>回声Foo> /tMP/file ,因此我认为它包括人类交互。当然可以。一旦你有了它,你可以用任何你能想象的方式在那里写作。