Linux C 父子进程 与 有名管道
1、mkfifo() 函数 创建管道文件的节点
2、open()函数 在内核创建管道空间,库<fcntl.h>
read()
write()
3、fork() 函数 父子进程,库<sys/types.h>
代码 - - mkfifo()创建管道文件节点
1 #include <stdio.h>2 3 int main()4 {5 int ret;6 //管道文件、字符设备、块设备、套接字 只有文件节点,不占磁盘空间7 ret = mkfifo("./myfifo",0777); //mkfifo()只是创建了管道文件节点,并没有在内核空间创建管道空间8 //mkfifo()创建管道节点;open()在内核创建管道空间9 if(ret < 0)10 {11 printf("myfifo create failure.\n");12 return -1;13 }14 15 printf("myfifo create success.\n");16 return 0;17 }
代码 - - open()在内核创建管道空间
1 #include <stdio.h>2 #include <sys/types.h> //fork()3 #include <fcntl.h> //open()、write()、read()4 5 int main()6 {7 pid_t pid; //进程号8 int process_inter = 0;9 int process_inter_bak = 0;10 11 pid = fork(); //创建父子进程12 if(pid == 0) //子进程 13 {14 int i = 0;15 int fd2;16 fd2 = open("./myfifo",O_RDONLY); //在内核创建管道空间17 read(fd2, &process_inter_bak, 4); //读取管道18 close(fd2);19 while(process_inter_bak == 0);20 for(i = 0; i < 5; i++)21 {22 printf("this is child process i = %d\n",i);23 usleep(100);24 }25 }26 if(pid > 0) //父进程27 {28 int i = 0;29 int fd1;30 for(i = 0; i < 5; i++)31 {32 printf("parent process i = %d\n",i);33 usleep(100);34 }35 process_inter = 1;36 fd1 = open("./myfifo",O_WRONLY);37 write(fd1, &process_inter, sizeof(process_inter)); //写入管道38 while(1);39 close(fd1);40 }41 42 return 0;43 }
执行:
Linux C 父子进程 与 有名管道相关推荐
- 2.12父子进程通过匿名管道通信
目录 1.pipe函数 2.查看管道缓冲大小 1.pipe函数 #include <unistd.h> int pipe(int pipefd[2]);功能:创建一个匿名管道,用来进程间通 ...
- Linux中父子进程、兄弟子进程之间通信方式--匿名管道pipe(适用于有血缘关系的进程)
文章目录 编程环境: 进程间通信 IPC: 匿名管道(pipe): 父子进程间通信: 兄弟子进程间通信: 管道的读写行为: 读操作: 写操作: 查看管道缓冲区大小: 设置管道的非阻塞属性: 下载地址: ...
- 【Linux系统编程】进程间通信--有名管道
命名管道的概述 无名管道,由于没有名字,只能用于亲缘关系的进程间通信(更多详情,请看<无名管道>).为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道.FIFO 文件. 命名管道( ...
- linux之父子进程的输出
首先,我们来回忆一下父进程与子进程,前几节讲了如何创建子进程,像这样的,pid_t id = fork(); 这样我们就创建好了一个子进程,然而fork()函数的返回值是什么呢?这里要记住:子进程返回 ...
- Linux系统编程:fifo有名管道的使用
fifo介绍 我们可以利用管道进行进程间通信,已经有匿名管道 为啥还要fifo 有名管道呢?有名管道是对匿名管道的一个补充,匿名管道是用在有血缘关系的进程间通信.fifo有名管道呢,可以用在任何进程间 ...
- Linux下父子进程的全局变量
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL杂记页 回到顶级页面:PostgreSQL索引页 [作者 高健@博客园 luckyjackgao@gmai ...
- linux父进程和子进程查看,linux查看父子进程
python多进程代码 test.py #coding=utf-8 import multiprocessing import time def func(msg): print "msg: ...
- linux下父子进程共享socket,多进程共享socket(Linux,Win32)
您可以共享一两个(或多个插座)在Linux进程和甚至是Windows. 在Linux(或POSIX类型的操作系统),用fork()将导致叉孩子有父母的所有的文件描述符的副本. 就算是没有关闭将继续共享 ...
- linux mkfifo 命令_linux 中有名管道mkfifo
1创建管道并且发送 fifo #include //文件操作函数头文件 #include #include #include #include #include #include int main(i ...
最新文章
- 三数之和(三数不重复)
- 推荐8个鲜为人知,但是很有意思的工具,简洁又好用!
- CCAI 2019 | Shai Ben-David:人工智能的可学习性能否判定?
- 网络工程师成长日记365-IBIS西安工程回忆录
- 索引中丢失 IN 或 OUT 参数
- python循环写入csv文件_Python3.5想把抓到的股票信息以循环方式存入到csv文件中怎么做...
- C#学习之用迭代器实现枚举器
- win7的附件计算机没了,win7系统附件工具不见了的解决方法
- 二元最佳前缀码_贪心-最优前缀码
- [原]海纳百川 有容乃大:SparkR与Docker的机器学习实战
- 关于jupyter notebook闪退问题【我真真的够了,大家以后不要乱捣鼓电脑了,绝了】
- 程序猿的自救 从零备考NSCA/CSCS 2 阻力运动生物力学
- 【附源码】计算机毕业设计SSM网上旅游订票服务系统
- 全量表/增量表/快照表
- php 使用内置web服务器
- Cookie是什么及用法详解
- 关于SAP十个常见问题集锦
- Windows 10 配置OpenGL ES 3.0 环境
- 癌症有哪些数据集_癌症
- python交通流预测算法_基于机器学习的交通流预测技术的研究与应用
热门文章
- 省二计算机应用基础试题及答案,计算机应用基础试题及答案2
- 几个html页面怎么连接,如何使用flas连接我的两个HTML页面
- 机器人误触防熊喷雾24人住院?这个网站收集AI‘翻车’案例,所有‘罪证’都不放过
- Binder机制原理、源码、AIDL,IBinder,Binder,IInterface,BinderDriver,需要的都在这里了
- 自制USB充电接口,手机不显示充电状态的原因
- scim 跨域身份管理介绍(一)
- note_2019_9
- 2022 第五届 浙江省大学生网络与信息安全竞赛技能赛 预赛 Writeup,5题
- Java23种设计模式总结-学而不习则罔
- 日语口语:生活中常见的日语短语