管道pipe-有名管道
<1>两个进程利用管道来进行读写,写一个write_fifo.c文件利用mkfifo创建管道,以只写的方式打开管道文件,然后创建while循环,向管道中输入数据,当输入的数据是”quit”的时候,当前进程结束。在写一个read_fifo.c文件利用mkfifo创建管道,以只读的方式打开read_filo.c文件中打开的管道文件。然后把数据输出来。当读取到”quit”数据的时候,进程结束)。两个进程结束。
读
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>int main(int argc, const char *argv[])
{int fd;int n;char buf[1024]={0};if(argc != 2){fprintf(stderr,"Usage:%s file\n",argv[0]);return -1;}//创建有名管道if((mkfifo(argv[1],0666)<0) && errno != EEXIST){perror("Fail to mkfifo");return -1;}printf("open %s is successful\n",argv[1]);fd = open(argv[1],O_RDWR);while(1){
// memset(buf,0,sizeof(buf));n = read(fd,buf,sizeof(buf));if(n==0){perror("Fail to read");return -1;}if(!strncmp(buf,"quit",4))//exit(0);printf("读到的字节:%s\n",buf);}close(fd);return 0;
}
写
#include<stdlib.h>
#include<errno.h>void write_file(int fd)
{char buf[1024]={0};int n = 0;while(1){memset(buf,0,sizeof(buf));fgets(buf,sizeof(buf),stdin);write(fd,buf,sizeof(buf));lseek(fd,-n,SEEK_CUR);if(!strncmp(buf,"quit",4))exit(0);}
}int main(int argc, const char *argv[])
{int fd;if(argc != 2){fprintf(stderr,"Usage:%s file\n",argv[0]);return -1;}//创建有名管道 if((mkfifo(argv[1],0666)<0) && errno != EEXIST){perror("Fail to mkfifo");return -1;}printf("open %s is successful\n",argv[1]);fd = open(argv[1],O_RDWR);write_file(fd);close(fd);return 0;
}
结果
管道pipe-有名管道相关推荐
- 进程间通信方式(一)-- 无名管道、有名管道
文章目录 1. 进程间通信方式分类 2. 进程间通信实现方式 3. 无名管道 3.1 概念 3.2 相关函数 读写规律 3.3 无名管道实现进程间通信 4. 有名管道 4.1 概念 4.2 创建有名管 ...
- 【嵌入式总复习】Linux管道详解——管道通信、无名管道、有名管道、具体应用示例
目录 管道 1. 管道通信 1.1 通信模式 1.2 管道通信中特殊的名词 2. 无名管道(PIPE) 2.1 无名管道的通信原理 2.2 无名管道特点 2.3 如何操作无名管道 示例1 示例2 3. ...
- linux进程通信1:进程通信概述,管道通信原理(无名管道,有名管道),管道编程实战
进程通信概述,管道通信原理(无名管道,有名管道),管道编程实战 1.进程间通信概述: 举例1: 你手机微信和别人手机微信通信 举例2: 如:父子进程wait 和 exit之间的通信 进程间通信(IPC ...
- linux有名管道 mkfifo,有名管道mkfifo
int mkfifo(const char *pathname, mode_t mode); int mknod(const char *pathname, mode_t mode, dev_t de ...
- 61-Linux_管道_有名管道
文章目录 管道 1.有名管道 (1)创建有名管道 (2)有名管道演示进程间通信 管道 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如 ...
- 管道——(1)有名管道和无名管道
一.引子 之前,两个进程间要发送消息,是通过信号来完成的.创建通知事件,通过它引起响应,但是传送的信息只是一个信号值而已. 如果两个进程需要交换更有用.复杂的信息,就需要用到--管道. 管道--一个进 ...
- linux无名管道和有名管道
1)无名管道:管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道:只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程). 单独构成一种独立的文件系统:管道对于管道两端的进程而 ...
- UNIX环境高级编程——无名管道和有名管道
一.进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2 ...
- Linux学习笔记-无名管道,有名管道,消息队列
Linux学习笔记-无名管道,命名管道,消息队列 无名管道 特点 创建无名管道的函数 demo 命名管道 特点 创建命名管道的函数 demo 消息队列 特点 创建消息队列涉及到的函数 demo 无名管 ...
- #Linux#进程间通信# 管道(pipe)-匿名管道pipe
我们通常把一个进程连接到另一个进程的一个数据流称为一个"管道",通常是用作把一个进程的输出通过管道连接到另一个进程的输入.管道本质上是内核的一块缓存.内核使用环形队列机制,借助内核 ...
最新文章
- mysql5.7版本源_用最新MySQL 8.0的源安裝MySQL 5.7版本(CentOS 7環境下)
- [转载]登录功能测试总结
- therefore/so/hence/then/accordingly/Thus
- ASP操作MSQL类
- Windows——FTP命令匿名登录解决方案
- html分类代码查询,html标签元素分类(示例代码)
- “百变”Redis带你见识不同场景下的产品技术架构
- 斗罗大陆服务器维护,04.28《斗罗大陆:武魂觉醒》停服维护公告(修罗1-7服先行服)...
- [Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常
- 深入浅出JavaScript (四)DHTML
- crypto_policy_set_aes_cm_128_hmac_sha1_32/crypto_policy_set_aes_cm_128_hmac_sha1_80找不到
- 梅科尔工作室-第五次网页前端培训笔记(Javascript)
- 达摩院发布:2022年十大科技趋势
- word整个表格首行缩进_word表格文字首行缩进
- Linux常用图片查看处理软件
- 微软官方出了一款吊打WPS的PPT插件
- jquery项目实战——爱创课堂专业前端培训
- 【贪心】 大天使之剑
- 永久免费的抠图软件分享
- Keystone 组件
热门文章
- 圆周率π是怎么算出来的,用程序怎么算
- 面向对象设计原则_面向对象的设计原则
- 应用计算机解数学模型之我见,计算机模拟算法在数学建模中的应用
- DS1302时钟(进阶版)可调日期和时间等
- 计算机领域区块链是什么是意思,为什么区块链瑞普顿RXP是不可篡改的
- 绿地签约十家酒店项目,轻资产输出步伐再提档
- 360篡改Edge、Google浏览器主页的应对方法
- 大白话解读什么是七层网络协议,TCP/IP五层模型通信知识(一)
- 苹果id退出后数据还在吗_答疑你的手机连接WiFi后,会关闭移动数据吗?
- 502粘到手上变硬了怎么办_502胶水粘手如何处理?五种小技巧帮你轻松去胶!