linux c之管道的介绍、创建关闭和简单读写(父进程向子进程写入数据)
1、管道介绍、
进程间通信的几种主要手段中。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具
有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
2、管道特点、
管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。
3、 数据的读出和写入:
一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。然而 管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信, 在有名管 道(namedpipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它 提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO不相关的进程也能交换数据。值得注意的是,FIFO严格遵循先进先出(firstin first out&#x
linux c之管道的介绍、创建关闭和简单读写(父进程向子进程写入数据)相关推荐
- 2022.8.31 进程中无名管道的特点,无名管道的创建,为何无名管道只能能够实现具有亲缘关系的进程间的通信,以及实现利用无名管道父进程给子进程发送消息的完整代码。
无名管道通信 无名管道特点: (1):只能用于具有亲缘关系的进程之间的通信.(父子进程或兄弟进程) (2):是一个半双工的通信模式,具有固定的读端和写端.(fd[0]固定为读端,fd[1]固定为写端) ...
- Linux系统编程之进程退出,父进程等待子进程退出
1.首先讲一下进程的退出 进程的退出分为正常退出和异常退出: 正常退出: (1)main函数调用return (2)进程调用exit(),标准C库 (3)进程调用_exit()或_Exit(),属于系 ...
- linux的子进程和父进程,[Linux进程]在父进程和子进程中分别对文件进行操作
[Linux进程]在父进程和子进程中分别对文件进行操作 发布时间:2020-04-10 19:36:49 来源:51CTO 阅读:917 作者:银河星君 /*子进程和父进程同时对一个文件进行写操作导致 ...
- Linux 的父进程和子进程的执行情况(附有案例代码)
系列文章目录 该文章主要是针对面试做大致的了解,通俗易懂!!! 一.父进程.子进程的定义 1.父进程 指已创建一个或多个子进程的进程.在Linux里,除了进程0以外的所有进程都是由其他进程使用系统调用 ...
- linux父进程中显示子进程pid,请教linux下c语言函数fork父进程打印子进程的PID
请教linux下c语言函数fork父进程打印子进程的PID 关注:296 答案:2 信息版本:手机版 解决时间 2019-01-14 04:55 雨不眠的下 2019-01-13 12:23 用于 ...
- Linux 进程、父进程、子进程
进程和程序的区别 一. 进程是动态的,程序是静态的:程序是有序代码的集合,进程是程序的执行.进程有核心态/用户态. 二. 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可以长久保存 三.进 ...
- Linux父进程如何发信号给子进程,在父进程和子进程之间发送信号
我正试图从parrent进程向子进程发送一个用户定义的(SIGUSR1或SIGUSR2)信号.子进程接收到信号后,会等待5秒钟,并将另一个用户定义的信号发送给parrent进程.当parrent进程接 ...
- linux ctrl c 子进程,ctrl c会向Linux中的父进程和子进程发送SIGINT信号吗?
在终端中,我执行了一个主父进程,它将分叉子进程.在父进程和子进程中,我实现了一个SIGINT信号处理程序. 所以当我按"ctrl c"时,两个处理程序是否同时被调用?或者我是否需要 ...
- linux 更改父进程名称,[Linux进程]在父进程和子进程中分别修改变量
/*这是一个调用fork函数创建一个子进程,然后分别打印输出子进程 和父进程中的变量的实例*/ #include #include #include #include int glob = 6; ...
最新文章
- Nio 中的方法 - 文件上传
- linux7 显示登陆,centos7 查看,修改登录日志
- Deep Learning 26:读论文“Maxout Networks”——ICML 2013
- C# 使用正则表达式去掉字符串中的数字,或者去掉字符串中的非数字
- 前沿观察 | SageDB:一个自学成才的数据库
- 配置信息的优化,类型转换器
- Tensorflow安装GPU环境
- Quartz.Net 2.0 bate1 使用
- JAVA 设计模式 迭代器模式
- 编码格式详解:多字节字符集和Unicode字符集
- Hyperchain 超块链创始人史兴国对谈杨民道:新公链赛道烽烟再起,move语言能开启下一轮牛市吗?
- namecheap注册域名优惠码
- 计算机网络工资如何计算,2019 税后工资计算器,能够准确算薪
- unity3d双面材质_unity3d中创建双面材质
- MATLAB分析频谱
- 已知T(n)=2T(n/2)+n,求O(n)?
- TweenMax学习小计
- js数组操作的一些方法在面试题的使用
- ByVal与ByRef的区别
- 巴菲特在University of Florida商学院的一次演讲
热门文章
- Dapper防sql注入,同一条SQL支持多种数据库
- 浅谈C#更改令牌ChangeToken
- 让 Hangfire 使用 MongoDB 存储
- 我居然手写了Spring框架
- .NET 云原生架构师训练营(模块二 基础巩固 配置)--学习笔记
- C#知多少 | 每个版本都更新了什么?
- [C#.NET 拾遗补漏]08:强大的LINQ
- .Net Core微服务入门全纪录(完结)——Ocelot与Swagger
- ASP.NET Core快速入门(第4章:ASP.NET Core HTTP介绍)--学习笔记
- C#规范整理·资源管理和序列化