16.进程间的通信:管道
1.popen(), pclose()
2.pipe()2.1 普通 pipe2.2 父子进程 pipe2.3 不同进程 pipe2.4 用管道当作 标准输入,标准输出2.5 命名管道
1.什么是管道
2.进程管道
3.将输出送往 popen
4.pipe 调用
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>int main()
{int data_processed;int file_pipes[2];const char some_data[] = "123";char buffer[BUFSIZ + 1];pid_t fork_result;memset(buffer, '\0', sizeof(buffer));if (pipe(file_pipes) == 0) {fork_result = fork();if (fork_result == -1) {fprintf(stderr, "Fork failure");exit(EXIT_FAILURE);}// We've made sure the fork worked, so if fork_result equals zero, we're in the child process.if (fork_result == 0) {data_processed = read(file_pipes[0], buffer, BUFSIZ);printf("Read %d bytes: %s\n", data_processed, buffer);exit(EXIT_SUCCESS);}// Otherwise, we must be the parent process.else {data_processed = write(file_pipes[1], some_data,strlen(some_data));printf("Wrote %d bytes\n", data_processed);}}exit(EXIT_SUCCESS);
}
5.父进程和子进程
- 命名管道:FIFO
把管道做标准输入和标准输出:
好处是 可以调用标准程序,即那些不需要以文件描述符作为参数的程序
先关闭标准输入,然后用 dup() 函数
管道有长度限制: PIPE_BUF
一个管道,多个写进程的话,必须保持写请求是发往一个阻塞的 FIFO,并且每次写请求的数据长度小于等于 PIPE_BUF 字节,系统就能保证写数据不会交错在一起。
16.进程间的通信:管道相关推荐
- 【操作系统】进程间的通信——管道
进程间的通信-管道 管道 进程间的通信(IPC-Inter-Process Communication)有多种方式,管道是其中最基本的方式. 管道是半双工的,即是单向的. 管道是FIFO(先进先出)的 ...
- 进程间的通信----管道
前提:本文是基于Linux系统下的学习 用户态的进程是如何组织的呢? 所有的用户态进构成了一棵树.进程树. 进程树的树根是init.也就是1号进程.是用户态进程的祖宗进程. 如何查看进程树? pstr ...
- 进程间的通信IPC(无名管道和命名管道)
进程间的通信IPC介绍 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息. IPC的方式通常有管道(包括无名管道和命名管道).消息队列.信号量 ...
- 进程间的通信——无名管道
进程间的通信--无名管道 宗旨:技术的学习是有限的,分享的精神是无限的. 一.进程间的通信 (1)同主机进程间数据交互机制:无名管道(PIPE),有名管道(FIFO).消息队列和共享内存.无名管道多用 ...
- 网络编程之 进程间的通信之管道的使用
如何使用管道是进程间通信的关键 博主先声明一下,关于处理进程创建以及销毁的方法. "子进程究竟何时终止????调用waitpid函数后还要无休止的等待子进程终止吗???&quo ...
- 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)
Linux进程进程间的通信之命名管道(FIFO) 命名管道(FIFO),它和一般的管道一样.都是作为中间的邮递员来实现两个进程间的通信交流. 命名管道(FIFO)有几个特点: 1.命名管道(FIFO) ...
- 2022.8.31 进程中无名管道的特点,无名管道的创建,为何无名管道只能能够实现具有亲缘关系的进程间的通信,以及实现利用无名管道父进程给子进程发送消息的完整代码。
无名管道通信 无名管道特点: (1):只能用于具有亲缘关系的进程之间的通信.(父子进程或兄弟进程) (2):是一个半双工的通信模式,具有固定的读端和写端.(fd[0]固定为读端,fd[1]固定为写端) ...
- linux进程间通讯-无名管道
文章目录 无名管道 无名管道的创建 -- pipe函数 无名管道的读写规律 无名管道 无名管道概述 管道(pipe)又称无名管道. 无名管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符.任 ...
- 同步线程和进程间的通信
最近回去学习了一下进程和进程间的通信,有时候很多东西久不看了也就一下子忘了== 这里面有好几个互斥对象使用线程的 1 void mListText(CString str) 2 { 3 m_list_ ...
- 【转载】进程间的通信之剪贴板方法实现源码
1 源码无私奉献 2 3 void CClipboardDlg::OnBnClickedButton1() 4 { 5 // TODO: 在此添加控件通知处理程序代码 6 //打开剪贴板 7 if(O ...
最新文章
- SAE取消每日免费云豆赠送机制
- python设置字体_Python实现文字特效的方法
- 前端逼死强迫症系列之javascript
- python解析XML文件并转存到excel
- 安装Fedora 20桌面版并配置(gnome桌面环境)
- 零门槛修改微信步数(基于虚拟xposed)
- 北大才女文章 《卖米》感动人心
- Windows系统下使用WCP搭建自己的本地知识库管理平台
- 大象不会跳舞了吗?营收下滑的IBM在干什么
- 校验、加密、压缩、哈希值的区别,我老是弄混,现在总结一下
- mc服务器文件夹改皮肤,我的世界皮肤放在哪个文件夹位置及更换方法解析
- 事务四大特征:(原子性、一致性、隔离性、持久性)
- MySQL数据查询之多表查询
- python panda3d教程_panda3d学习笔记(一)Hello World
- 一个接口满足你对天气数据的所有想象,包含小时预报,实况,逐日预报,城市预报,实况,雷达月报,生活指数
- 孩子一看学习就上瘾,不信试试看(ZT)
- Android Java 多线程常见问题
- R语言 Fisher线性判别
- 如何使用手机里的Windows系统云桌面?
- 命令行下打开文件管理器