博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程间通信之命名管道
阅读量:6405 次
发布时间:2019-06-23

本文共 891 字,大约阅读时间需要 2 分钟。

命名管道(FIFO)是进程间通信的一种方式。

API:

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

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.)

 

与相比,命名管道可用于任意两个进程间的通信。

转载于:https://www.cnblogs.com/gattaca/p/6547580.html

你可能感兴趣的文章
Android (Launch Mode) 四种启动模式
查看>>
透视学理论(二)
查看>>
Dubbo/HSF在Service Mesh下的思考和方案
查看>>
Django form表单
查看>>
CTYL-9.14(tomcat端口与阿里云安全组,域名与tomcat配置,域名与反向代理)
查看>>
Java 多线程相关问题记录
查看>>
LNMP架构介绍、MySQL安装、PHP安装、 Nginx介绍
查看>>
es6 class 笔记
查看>>
简单的Spark+Mysql整合开发
查看>>
阿里java面试经验大汇总(附阿里职位需求)
查看>>
Python全套零基础视频教程+软件2018最新编程视频!
查看>>
内存管理之1:x86段式内存管理与保护模式
查看>>
20180925上课截图
查看>>
IO输入/输出流的简单总结
查看>>
JavaScript之DOM-9 HTML DOM(HTML DOM概述、常用HTML DOM对象、HTML表单)
查看>>
技术成长之路(一)
查看>>
中国北方国际五金城硬件选型
查看>>
Discuz X2 [Type] 查询语句安全威胁
查看>>
php.exe启动时提示缺少MVCR110.dall 64位 window系统 解决
查看>>
Hive索引
查看>>