📜  mkfifo returnn (1)

📅  最后修改于: 2023-12-03 15:02:58.213000             🧑  作者: Mango

mkfifo() 函数

简介

mkfifo() 函数用于创建一个命名管道(named pipe),也称为FIFO(First In, First Out)。命名管道与匿名管道不同,它们以特殊文件的形式存在于文件系统中。

函数原型

int mkfifo(const char *pathname, mode_t mode);

参数说明
  • pathname:命名管道的路径名,如果路径名中不存在该管道,则会创建一个新管道。
  • mode:该参数指定了管道的访问权限,取值与 chmod() 函数相同。
返回值说明
  • 如果函数调用成功,则会返回 0
  • 如果函数调用失败,则会返回 -1 并设置相应的错误码。可以使用 perror() 函数打印错误信息。
示例代码
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>

int main() {
    int ret = mkfifo("test_fifo", 0666);
    if (ret == -1) {
        perror("mkfifo");
        exit(1);
    }
    printf("命名管道创建成功,路径为:%s\n", "test_fifo");
    return 0;
}
注意事项
  • 命名管道是一种有名的管道,可以被多个进程共享,因此需要使用文件访问权限管理用户对管道的读写操作。
  • 使用命名管道时,需要先打开读通道或写通道,否则进程会一直阻塞等待读写数据。
  • 如果命名管道已经存在,则 mkfifo() 函数不会重新创建该管道。