命名管道写内容生活

got*_*tqn 3 c pipe

我在Linux下创建并写入C中的命名管道.在那里写入的文本保存在命名管道中多长时间?

从我的工作,以及程序运行后的管道文件的字节,我想在程序结束后文本不会保留在管道中.在mkfifo手册中没有关于此的信息.我知道普通管道在创建它们的过程关闭后会被销毁.但是,在程序完成后仍然在文件系统中的命名管道呢?

这是我用来创建命名管道并从中写入/读取的代码.

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char *argv[]) {
    int FIFOFileDescriptorID;
    FIFOFileDescriptorID = mkfifo(argv[1], 0660);

    int ProccesID = fork();
    if (ProccesID == 0) {
        int TempFileDescriptor = 0;
        char buffer[512] = "Some random text goes here...";

        TempFileDescriptor = open(argv[1], O_WRONLY);
        write(TempFileDescriptor, &buffer, sizeof(buffer));
        close(TempFileDescriptor);
    } else {
        int TempFileDescriptor = 0;
        char buffer[512];

        TempFileDescriptor = open(argv[1], O_RDONLY);
        read(TempFileDescriptor, &buffer, sizeof(buffer));
        close(TempFileDescriptor);
        printf("Received string: %s\n", buffer);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我运行这个程序并创建并使用管道进行写入/读取之后,我再运行一个 - 只是从给定的管道中读取文本.的确,那里没有文字.

我会更好地检查这个东西,因为有一个很好的改变,在我启动程序之后再次删除/创建管道.

Shi*_*dim 7

它不会保存任何东西. 当您向命名管道读取/写入内容时,除非某些其他进程从同一命名管道写入/读取,否则将阻止该进程.

该文件保留在文件系统中.但是当阅读/写作完成时,内容就会消失.

来自linux手册,

以这种方式创建FIFO特殊文件后,任何进程都可以打开它进行读取或写入,方式与普通文件相同.但是,必须先在两端打开,然后才能对其进行任何输入或输出操作. 打开FIFO以便正常读取块,直到某个其他进程打开相同的FIFO进行写入,反之亦然.