C 无法读取 fifo(命名管道)
C can't read from fifo (named pipe)
我创建了一个 fifo,但无法从中读取。有什么问题?这是代码和输出。如果我在没有 O_NONBLOCK 程序的情况下使用 O_RDONLY,请等待。
pid_t p;
int fd;
char str[]="sample";
mkfifo("myfifo", S_IRUSR | S_IWUSR);
fd = open("myfifo", O_RDWR);
printf("write %d byte\n", write(fd, str, 5));
close(fd);
fd = open("myfifo", O_RDONLY | O_NONBLOCK);
printf("read %d byte\n",read(fd, str, 6));
close(fd);
unlink("myfifo");
输出:
write 5 byte
read 0 byte
- 问题是您关闭文件,
你可以试试这个或者 fork 另一个进程并读取文件,这就是命名 fifos 用于进程间通信的主要原因
这个link解释的很详细How to send a simple string between two programs using pipes?
pid_t p;
int fd;
char str[]="sample";
mkfifo("myfifo", S_IRUSR | S_IWUSR);
fd = open("myfifo", O_RDWR);
printf("write %d byte\n", write(fd, str, 5));
printf("read %d byte\n",read(fd, str, 6));
close(fd);
unlink("myfifo");
我创建了一个 fifo,但无法从中读取。有什么问题?这是代码和输出。如果我在没有 O_NONBLOCK 程序的情况下使用 O_RDONLY,请等待。
pid_t p;
int fd;
char str[]="sample";
mkfifo("myfifo", S_IRUSR | S_IWUSR);
fd = open("myfifo", O_RDWR);
printf("write %d byte\n", write(fd, str, 5));
close(fd);
fd = open("myfifo", O_RDONLY | O_NONBLOCK);
printf("read %d byte\n",read(fd, str, 6));
close(fd);
unlink("myfifo");
输出:
write 5 byte
read 0 byte
- 问题是您关闭文件,
你可以试试这个或者 fork 另一个进程并读取文件,这就是命名 fifos 用于进程间通信的主要原因
这个link解释的很详细How to send a simple string between two programs using pipes?
pid_t p;
int fd;
char str[]="sample";
mkfifo("myfifo", S_IRUSR | S_IWUSR);
fd = open("myfifo", O_RDWR);
printf("write %d byte\n", write(fd, str, 5));
printf("read %d byte\n",read(fd, str, 6));
close(fd);
unlink("myfifo");