首页 > 代码库 > 进程间通信之命名管道
进程间通信之命名管道
命名管道(FIFO)是进程间通信的一种方式,DEMO如下:
// 写进程 int main(int argc, char **argv) { char filename[] = "/tmp/my_fifo"; if (mkfifo(filename, 0777) < 0) { perror("mkfifo error"); exit(1); } int fd = open(filename, O_WRONLY); char buffer[128] = "hello world"; write(fd, buffer, strlen(buffer)); printf("write done\n"); return 0; } // 读进程 int main(int argc, char **argv) { char filename[] = "/tmp/my_fifo"; int fd = open(filename, O_RDONLY); char buffer[128]; int n = read(fd, buffer, 128); buffer[n] = ‘\0‘; printf("input is : %s\n", buffer); return 0; }
两个地方需要注意:
1. mkfifo会在/tmp目录下创建文件my_fifo
2. 读进程open之前,写进程被阻塞
(it has to be open at both ends simultaneously before you can proceed to do any input or output operations on it.)
与管道相比,命名管道可用于任意两个进程间的通信。
进程间通信之命名管道
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。