![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux c/c++ 进程间通信
Linux c/c++ 进程间通信
洪流之源
这个作者很懒,什么都没留下…
展开
-
进程间通信系列(1)概述
进程间的通讯需要达到的目的:1.数据传输:一个进程需要将数据传送给另外一个进程,发送的数据量在一个字节到几兆字节之间;2.数据共享:多个进程需要操作共享数据,一个进程对共享数据的修改,别的进程应该应该立刻看到;3.通知事件:一个进程需要向另外一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止要通知父进程);4.资源共享:多个进程之间共享同样的资源。为了做到这一点,原创 2017-04-07 22:26:10 · 336 阅读 · 0 评论 -
进程间通信系列(5)标准库中的管道操作
#include FILE *popen(const char *cmdstring, const char *type);返回值:成功返回文件指针,出错返回NULLint pclose(FILE *fp);返回值:cmdstring的终止状态,出错返回-1使用popen()创建的管道必须使用pclose()关闭。其实,popen/pclose和标准文件输入/输出流原创 2017-04-19 22:35:25 · 271 阅读 · 0 评论 -
进程间通信系列(6)命名管道
命名管道FIFO系统调用#include #include int mkfifo(const char*pathname, mode_t mode);返回:若成功则返回0,出错返回-1命名管道的特性:1.只要对FIFO有适当的访问权限,FIFO可用在任何两个没有任何关系的进程之间通信;2.本质是内核的一块缓存,另在文件系统中以一个特殊的设备文件(管道文件)存在;3.原创 2017-04-23 23:02:39 · 414 阅读 · 0 评论 -
进程间通信系列(2)管道分类与读写
管道通信是针对本地计算机的两个进程之间的通信而设计的通信方法,管道建立之后,实际获得两个文件描述符:一个用于读取而另外一个用于写入。管道是单工的,数据只能从一个放向流动,需要双向通信时需要建立两个管道。数据的读入和写入:一个进程向管道中写的内容被管道的另一端的进程读取。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。匿名管道在关系进程中进行(父进原创 2017-04-07 22:36:49 · 536 阅读 · 0 评论 -
进程间通信系列(3)匿名管道范例代码
范例程序通过父进程创建两个子进程,两个子进程通过管道进行通信,实现了cat /passwd | grep root的功能。#include #include #include #include #include char *cmd1[3] = {"/bin/cat", "/etc/passwd", NULL};char *cmd2[3] = {"/bin/grep", "roo原创 2017-04-08 09:33:24 · 707 阅读 · 0 评论 -
进程间通信系列(7)匿名管道和命名管道异同
一、匿名管道1) 由pipe系统调用,管道由父进程建立2) 单工通信的3) 在关系进程中进行(父进程和子进程、同一个父进程的两个子进程之间)4) 管道位于内核空间,其实是一块缓存二、命名管道(FIFO)1) 两个没有任何关系的进程之间通信可通过命名管道进行数据传输,2) 本质是内核中的一块缓存,另在文件系统中以一个特殊的设备文件(管道文件)存在。3) 两种方式建原创 2017-04-25 11:00:57 · 2433 阅读 · 0 评论 -
进程间通信系列(8)System V IPC概述
UNIX系统存在信号、匿名管道和命名管道等基本进程间通信机制。System V引入了三种高级进程间通信机制:消息队列、共享内存、信号量,称为IPC对象。IPC对象存在于内核中而不是文件系统中,由用户控制释放(用户管理IPC对象的生命周期,如果用户不释放IPC对象,则IPC对象存在于内核运行的所有周期内,除非开机重启),不像管道的释放由内核自动控制。 IPC对象通过其标识符来引用和访问,所原创 2017-04-25 14:27:26 · 691 阅读 · 0 评论 -
进程间通信系列(9)消息队列的创建、打开、控制
消息队列的特性:1.消息队列是内核中的链表;2.用户将数据传送给内核后,内核重新添加一些如用户ID、组ID、读写进程的ID和优先级等 相关信息后并打成一个数据包称为消息;3.允许一个或者多个进程往消息队列中写消息和读消息,但一个消息只能被一个进程读取, 读取完毕后就自动删除;4.消息队列具有一定的FIFO特性,消息可以按照顺序发送到队列中,也可以几种不同的方式原创 2017-04-25 14:33:17 · 844 阅读 · 0 评论 -
进程间通信系列(4)匿名管道的读写特性
1.通过打开两个管道来实现双向的管道;2.管道是阻塞性质的,当进程从管道中读取数据,若没有数据,进程会阻塞;3.当一个进程向管道中不断写入数据但是没有进程读取数据,此时若管道没有满是可以的,但是若管道满,则会报错;4.不完整管道:1)当读一个写端已被关闭的管道时,在所有数据被读取后,read返回0,以表示到达管道尾部;2)如果写一个读端已被关闭的管道,则产生SIGPIP原创 2017-04-10 14:15:52 · 997 阅读 · 0 评论