进程间通信----命名管道
来源:互联网 发布:淘宝一个金冠要多少丹 编辑:程序博客网 时间:2024/05/02 04:38
命名管道是一个设备文件,即使不存在血缘关系,只要可以访问该路径,就可以实现进程间的通信
*********************************************************************************************************************************
一、创建管道 (mkfifo)
(1)创建管道的函数 :#man 3 mkfifo
参数:pathname->在这个路径下创建一个命名管道,mode->创建出来的管道的权限 :0666|S_IFIFO(创建出来的权限会减去 umask 的值)
返回值:成功->ret==0 失败->ret==-1
管道一旦创建成功后,打开这个管道文件就可以进行进程间通信了。
该函数的使用:
server.c
client.c:
运行结果:(开启两个终端,一个执行server.c,另一个执行client.c,即可看到server与client之间的通信过程)
*********************************************************************************************************************************
(2)shell 命令创建管道:#man mkfifo
命令: #mkfifo 管道名(默认权限 664)
命令: #mkfifo -m 0666 管道名(管道的权限为:0666)
在一个终端上用shell命令创建tmp管道,并在此终端上读取该管道中的数据:
在另一个终端上往这个管道里写数据:
特点:
二、popen系统调用
(1)popen的定义
返回值:失败返回NULL
参数: command->命令 type->方式(“w”or “r")
该函数的特点:本函数与linux中的实现最大的不同是不需要用专门的pclose()函数来关闭文件指针,用普通的fclose()即可;
(2)popen的使用
一旦这个进程运行起来,就相当于在/home/zhangdan/BIT_CLASS/目录下执行 “ls -al" 命令
实际上popen做了以下几件事:
(1)调用 pipe 创建管道
(2)调用 fork 创建子进程
(3)让子进程调用 exec 去执行 command
(4)父进程等待子进程把消息写到管道,然后从管道里读取消息
*********************************************************************************************************************************
自己实现的popen函数-----mypopen函数:
dup2的功能:把输出重定向到fd[1]文件中,即写到管道里去(因为使用exec函数,它会直接输出到标准输出,即显示屏上,而我们需要把它写到管道里去,所以需要对标准输出重定向);
0 0
- 进程间通信---命名管道
- 进程间通信---命名管道
- 进程间通信--命名管道
- 进程间通信----命名管道
- 进程间通信命名管道
- 进程间通信-命名管道
- 进程间通信--命名管道
- 进程间通信---命名管道
- 进程间通信-命名管道
- 进程间通信--命名管道
- 进程间通信-命名管道
- 进程间通信--管道、命名管道、FIFO
- 命名管道进程通信
- 进程间命名管道通信示例
- 使用命名管道实现进程间通信
- 使用命名管道实现进程间通信
- 使用命名管道实现进程间通信
- 进程间通信 - 命名管道实现
- Jquery 获取 radio/select/checkbox 选中值
- 每天15min-HTML5(10)-表单(上)
- 《JavaScript DOM 编程艺术》读书笔记
- 使用 Jsoup 爬虫解析 html 新闻的实例
- 在CentOS 7上安装.NET Core R2跑Hello World
- 进程间通信----命名管道
- char与byte的区别
- Struts2.3+Spring3.2.8+Hibernate4.1全注解配置
- 博客开通鸟~
- 每日一linux命令(11)-------nl
- 跨域、跨文档传输数据(三)---- postMessage ; 实现跨文档消息传输;
- 图解用Fiddler做http协议分析入门
- Android xutil3网络模块二次封装
- 使用axis1+spring+hibernate搭建webservice框架(一)