当前位置: 首页 > news >正文

Linux系统编程——进程通信之有名管道

Linux系统编程——进程通信之有名管道

有名管道

有名管道可以使互不相关的两个进程互相通信。有名管道可以通过路径名,并且在文件系统中可见。进程通过为文件IO操作有名管道。不支持lseek()操作,遵循先进先出原则。

mkfifo

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

功能:创建管道文件。
filename:要创建的管道。
mode:管道的访问权限,一般用八进制数表示。

返回值:成功返回0,出错返回-1

实例:通过管道进行多进程输入输出

代码:

read.c

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>int main(int argc, char *argv[]) {int fd;char buf[32];if (mkfifo("./fifo", 0666) < 0) {if (errno == EEXIST) {printf("exist\n");} else {perror("mkfifo err");return -1;}}fd = open("./fifo", O_WRONLY);if (fd < 0 ) {perror("open failed:");return -1;}while(1) {fgets(buf, sizeof(buf), stdin);write(fd, buf,strlen(buf));if (strncmp(buf, "quit", 4) == 0)break;}close(fd);return 0;
}

write.c

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>int main(int argc, char *argv[]) {int fd;int dest_fd;char buf[32];if (mkfifo("./fifo", 0666) < 0) {if (errno == EEXIST) {printf("exist\n");} else {perror("mkfifo err");return -1;}}fd = open("./fifo", O_RDONLY);if (fd < 0 ) {perror("open failed:");return -1;}while(1) {read(fd, buf, sizeof(buf));if(strncmp(buf, "quit",4) == 0)break;printf("buf:%s", buf);}close(fd);return 0;
}

执行结果:
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/598734.html

相关文章:

  • 夷陵区住房和城乡建设局网站安卓 网站整站下载
  • 二手网站开发wordpress网站同步插件
  • 创口贴设计网站官网手机清理优化软件排名
  • 线性预处理|dfs回溯
  • VGG改进(15):Sparse Attention在VGG16中的设计与实现
  • 常州外贸网站制作弄一个电影网站怎么做
  • 网站信息评估抽查电子商务网站建设技术解决方案
  • 沈阳开发网站公司做销售的去哪个网站应聘
  • 树莓派5+Ubuntu24.04 LTS CH348 / CH9344 驱动安装 保姆级教程
  • 网站的功能和作用是什么上海方正大厦网站建设
  • Unity:lua热更新(二)——Lua语法(续)
  • 设计门户网站wordpress怎么装模板
  • Blender科幻机甲娘莉莉魅魔人物角色3D模型带骨骼动作绑定带贴图
  • 网站源码下载工具民间it网站建设
  • 松江工业区网站建设钱追得回吗
  • 数据库之增删改查
  • C# 生成指定位数的编号
  • 房地产网站建设哪家有效果网站开发工作分解结构
  • SAP FICO资产主数据查询接口
  • 婚恋网站开发做指甲的网站
  • 【IEEE出版、往届均检索】第三届智慧城市与信息系统国际学术会议 (ICSCIS 2026)
  • 国外免费wordpress温州谷歌优化公司
  • 开封网站建设公司排名建网站郑州
  • 成都建设银行网站flash 做网站教程
  • 企业网站 报价二级域名分发站免费
  • Android 开发 - Android JNI 开发关键要点
  • 延时芯片EH3B05上电延时3秒开关机芯片方案超低功耗
  • 神经 网络
  • 淮安企业网站制作网站重新备案 需要关闭网站么
  • elementor做视频网站网页设计基础教程