查漏补缺:进程间通信(IPC):管道
管道是UNIX系统IPC的最古老形式,所有UNIX系统都提供此种通信机制。管道有以下两种局限性:
(1)历史上,管道是半双工的(即数据只能在一个方向上流动)。
(2)管道只能在具有公共先祖的两个进程之间使用。通常,一个管道有一个进程创建,在进程调用fork之后,这个管道就能在父子进程间使用。
管道的创建:
管道通过调用pipe函数创建。
头文件:#include <unistd.h>
原型:int pipe(int fd[2])
返回值:成功,返回0;失败,返回-1.
经由参数fd返回两个文件描述符:fd[0]为 读而打开,fd[1]为写而打开。fd[1]的输出是fd[0]的输入。
图解如下:
  
测试程序:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h> int main(int argc,char* argv[])
{
int n;
int fd[];
pid_t pid;
char buf[] = {}; if(pipe(fd) < )
{
printf("pipe error\n");
return -;
} if((pid = fork()) < )
{
printf("fork error\n");
return -;
}
else if(pid > )
{
close(fd[]);
printf("父进程ID:%d,子进程ID:%d\n",getpid(),pid);
write(fd[],"hello world\n",sizeof("hello world\n"));
}
else
{
close(fd[]);
n = read(fd[],buf,sizeof(buf));
printf("子进程ID:%d\n",getpid());
write(STDOUT_FILENO,"子进程:",sizeof("子进程:"));
write(STDOUT_FILENO,buf,n);
} return ; }
查漏补缺:进程间通信(IPC):管道的更多相关文章
- 《CSS权威指南》基础复习+查漏补缺
		前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ... 
- js基础查漏补缺(更新)
		js基础查漏补缺: 1. NaN != NaN: 复制数组可以用slice: 数组的sort.reverse等方法都会改变自身: Map是一组键值对的结构,Set是key的集合: Array.Map. ... 
- Entity Framework 查漏补缺 (一)
		明确EF建立的数据库和对象之间的关系 EF也是一种ORM技术框架, 将对象模型和关系型数据库的数据结构对应起来,开发人员不在利用sql去操作数据相关结构和数据.以下是EF建立的数据库和对象之间关系 关 ... 
- 2019Java查漏补缺(一)
		看到一个总结的知识: 感觉很全面的知识梳理,自己在github上总结了计算机网络笔记就很累了,猜想思维导图的方式一定花费了作者很大的精力,特共享出来.原文:java基础思维导图 自己学习的查漏补缺如下 ... 
- 20165223 week1测试查漏补缺
		week1查漏补缺 经过第一周的学习后,在蓝墨云班课上做了一套31道题的小测试,下面是对测试题中遇到的错误的分析和总结: 一.背记题 不属于Java后继技术的是? Ptyhon Java后继技术有? ... 
- 今天開始慢下脚步,開始ios技术知识的查漏补缺。
		从2014.6.30 開始工作算起. 如今已经是第416天了.不止不觉.时间过的真快. 通过对之前工作的总结.发现,你的知识面.会决定你面对问题时的态度.过程和结果. 简单来讲.知识面拓展了,你才干有 ... 
- Mysql查漏补缺笔记
		目录 查漏补缺笔记2019/05/19 文件格式后缀 丢失修改,脏读,不可重复读 超键,候选键,主键 构S(Stmcture)/完整性I(Integrity)/数据操纵M(Malippulation) ... 
- 【spring源码分析】IOC容器初始化——查漏补缺(四)
		前言:在前几篇查漏补缺中,其实我们已经涉及到bean生命周期了,本篇内容进行详细分析. 首先看bean实例化过程: 分析: bean实例化开始后 注入对象属性后(前面IOC初始化十几篇文章). 检查激 ... 
- Django 查漏补缺
		Django 查漏补缺 Django 内容回顾: 一. Http 请求本质: 网络传输,运用socket Django程序: socket 服务端 a. 服务端监听IP和端口 b. 浏览器发送请求 ... 
- Mysql查漏补缺
		Mysql查漏补缺 存储引擎 数据库使用存储引擎来进行CRUD的操作,不同的存储引擎提供了不同的功能.Mysql支持的存储引擎有InnoDB.MyISAM.Memory.Merge.Archive.F ... 
随机推荐
- ubuntu下安裝程序的三個方式
			引言 在ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装deb和make install安装源码包三种.下面针对每一种方法各举例来说明. apt-get方法 使用 ... 
- 数字转中文大写=> 1234=> 一千二百三十四
			# -*- coding: utf-8 -*- # 最大值:九兆九千九百九十九亿九千九百九十九万九千九百九十九 import re p = ['', '十', '百', '千', '万', '十', ... 
- C++ lock_guard 互斥锁
			概述根据对象的析构函数自动调用的原理,c++11推出了std::lock_guard自动释放锁,其原理是:声明一个局部的lock_guard对象,在其构造函数中进行加锁,在其析构函数中进行解锁.最终的 ... 
- memory barrier  内存栅栏   并发编程
			并发编程 memory barrier (内存栅栏) CPU级 1.CPU中有多条流水线,执行代码时,会并行进行执行代码,所以CPU需要把程序指令 分配给每个流水线去分别执行,这个就是乱序执行: 2. ... 
- 2019-ECfinal-M题-value
			题目传送门 sol:每个下标都有选和不选两种情况,所以总方案数是$2^{n}$,在$n$最大是$100000$的情况下不符合要求.可以这样想,假设$i^{p}=k$有符合题目要求的解,还有一个整数$j ... 
- [LC] 1002. Find Common Characters
			Given an array A of strings made only from lowercase letters, return a list of all characters that s ... 
- 20)PHP,数组的遍历
			然后开始使用这2个函数和while循环结构来实现数组遍历: 形式: reset($arr1); while ( list ($key, $value ) = each( $arr1) ) //从数组$ ... 
- node安装依赖
			node 版本:v6.11.2 npm 版本:3.10.10 开发(在UI目录下) # 安装依赖 npm install ## 若上述不行则采取下面命令 npm install --regist ... 
- unittest如何在循环遍历一条用例时生成多个测试结果
			引用自:http://blog.csdn.net/kaku21/article/details/42124593 参考网址:http://programmaticallyspeaking.com/te ... 
- Nearby Bicycles
			With fast developments of information and communication technology, many cities today have establish ... 
