第12课-有名管道通讯

1.有名管道:又称为FIFO文件。
2.man命令:1.系统命令,2.系统调用,3库函数
3.函数学习
5.2 创建有名管道
5.2.1 函数名
mkfifo
5.2.2 函数原形
int mkfifo(const char *pathname, mode_t mode);
5.2.3 函数功能
创建一个fifo文件(有名管道)
5.2.4 所属头文件
<sys/types.h>
<sys/stat.h>
5.2.5 返回值
成功:0
失败:-1
5.2.6 参数说明
Pathname:要创建的fifo文件的名字(含路径)
Mode:访问权限,数字形式表示就可以(0666)


5.3 删除有名管道5.3.1 函数名
Unlink5.3.2 函数原形
int unlink(const char *pathname);5.3.3 函数功能
删除文件5.3.4 所属头文件
<unistd.h>5.3.5 返回值
成功:0失败:-1
5.3.6 参数说明Pathname:用来指明要删除的文件名(含路径)

4.FIFO文件和普通文件的区别
(1)写入的时候是只能只写打开(2)读取的时候是只读打开
(3)读取以后内容不再存在

其他的操作就用普通文件的操作。5.综合实例
(1)写文件进程---》创建FIFO
---》打开并写入---》关闭
(2)读文件进程---》读取文件
---》打印---》关闭
---》删除有名管道


6.如果没有读进程访问FIFO,则写进程会被阻塞,直到有进程访问该FIFO,才会结束写进程。

时间: 2024-10-18 08:35:27

第12课-有名管道通讯的相关文章

无名管道与有名管道通讯编程

管道通讯:一个进程在管道的尾部写入数据,另一个进程从管道的头部读出数据.管道包括无名管道和有名管道两种,前者只能用于父进程和子进程间的通信,后者可用于运行于同一系统中的任意两个进程间的通信. 管道通讯的特点: 1. 管道通讯是单向的,有固定的读端和写端. 2. 数据被进程从管道读出后,在管道中该数据就不存在了. 3. 当进程去读取空管道的时候,进程会阻塞. 4. 当进程往满管道写入数据时,进程会阻塞. 5. 管道容量为64KB(#define PIPE_BUFFERS 16,include/li

第11课-无名管道通讯

1.进程间通讯的目的(1)数据传输(2)资源共享(3)通知事件(4)进程控制2.通讯发展(1)UNIX进程间通讯(2)基于System V进程间通讯(3)POSIX进程间通讯3.POSIX标准4.进程间通讯的主要方式(1)无名管道(2)有名管道(3)信号(4)消息队列(5)共享内存(6)信号量(7)套接字5.管道通信(1)一个进程在管道尾部写入数据,另一个进程管道头部读取数据(2)无名管道:只能用于父进程子进程之间的通讯(3)有名管道:可以用于任意两个进程间的通讯6.管道特点:(1)管道通讯是单

有名管道通讯编程

创建2个进程,在A进程中创建一个有名管道,并向其写入数据,通过B进程从有名管道中读出数据. 有名管道又称命名管道,可用于无亲缘关系的进程之间通信,在某些特点上类似于文件. 用法:通过mkfifo创建有名管道,之后就可以想操作普通文件通过open().close().write().以及read()对它进行相应操作. 1.创建一个有名管道--mkfifo 头文件:#include<sys/types.h>,#include<sys/stat.h> 原型:int mkfifo(cons

[国嵌攻略][081][有名管道通讯]

有名管道 有名管道又称为FIFO文件,因此我们对有名管道的操作可以采用文件操作的方法,如使用open,read,write等. FIFO文件的特点 1.读取FIFO文件的进程只能以RDONLY方式打开FIFO文件. 2.写入FIFO文件的进程只能以WRONLY方式打开FIFO文件. 3.FIFO文件里面的内容被读取后就消失了,但普通文件里面的内容被读取后还存在. wFIFO.c #include <sys/types.h> #include <sys/stat.h> #includ

有名管道通讯

一.有名管道 1.有名管道又称FIFO文件,我们对有名管道的操作可以采取操作文件的方式,如使用open, read,write. 2.FIFO文件与普通文件不同处 (1). 读取FIFO文件的进程只能以“RDONLY”方式打开fifo文件. (2). 写Fifo文件的进程只能以“WRONLY”方式打开fofo文件. (3). Fifo文件里面的内容被读取后,就消失了.但是普通文件里面的内容读取后还存在 二.函数学习(创建FIFO文件,向FIFO写入数据, 退出) 1.创建管道 函数名: mkfi

进程间通讯之有名管道

进程通信是指在进程间交换信息(传输数据).目前的计算机系统均提供了多任务并行环境,无论是应用程序还是系统程序,都需要针对每一个任务创建相应的进程. 每个进程之间都是相互独立的,不同的进程运行在各自不同的内存空间中,因此,进程之间的信息传递不可能通过变量或其他数据结构直接进行,只能通过进程间通讯完成. 进程间通讯方式:信号 .管道.信号量.消息队列.共享内存.Socket 今天介绍一下通过管道进行程序间的通讯.管道分为有名管道和无名管道. (管道文件)(半双工通讯:数据流向是单向的.) 有名管道:

13.无名管道通讯编程

? 1.进程间的通信: Linux作为典型的多进程操作系统,进程与进程之间肯定需要信息交流,这就需要进程通信. 2.进程通信的目的: ????1.数据传输:一个进程需要将数据发送给另一个进程. ????2.资源共享:多个进程之间共享同样的资源. ????3.通知事件:一个进程需要向另一个/组进程发送信息,通知他们发生了某些事情. ????4.进程控制:有些进程希望完全控制另一个进程的执行,例如Debug进程.此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道他的状态改变. ? 3.通讯

[国嵌攻略][080][无名管道通讯]

通讯目的 1.数据传输 一个进程需要将数据发送给另外一个进程. 2.资源共享 多个进程之间共享同样的资源. 3.通知事件 一个进程需要向另外一个/组进程发送消息,通知它们发生了某事件. 4.进程控制 有些进程希望完全控制另外一个进程的执行,此时控制进程希望能够拦截另外一个进程的所有操作,并能够及时知道它的状态改变. 通信方式 1.无名管道(pipe):数据传输 2.有名管道(fifo):数据传输 3.信号(signal):通知事件 4.消息队列 5.内存共享 6.信号量:资源共享 7.套接字(s

Unix/Linux进程间通信(二):匿名管道、有名管道 pipe()、mkfifo()

1. 管道概述及相关API应用 1.1 管道相关的关键概念 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道: 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程): 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中. 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出.