如何将进程间通信的管道功能改写为一个长尾词的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1120个文字,预计阅读时间需要5分钟。
概述+管道是Unix操作系统的初始进程间通信(IPC)方式,其局限在于没有命名(无命名的管道FIFO)。因此,只能由有亲缘关系的进程使用,例如父子进程。管道和FIFO都通过read和write函数访问。
概述
管道是最初的Unix 进程间通信(IPC)的方式,它的局限在于没有名字(有名管道FIFO下节讲),从而只能由有亲缘关系的进程间使用,例如父子进程。管道和FIFO都是使用read和write函数访问的。
管道由pipe函数创建,提供一个单向的数据流
#include <unistd.h>
int pipe(int pipefd[2]);
函数返回两个文件描述符,fd[0]和fd[1],0用于读,1用于写。
调用pipe函数会在内核中开辟一块缓存区用于通信,一个读端,一个写端,fd[0]指向读端,fd[1]指向写端。
父子进程如何通过管道实现通信?
1、父进程调用pipe开辟管道,得到两个文件描述符指向管道的两端;
2、父进程调用fork创建子进程,子进程有两个文件描述符指向同一管道;
3、父进程关闭读端,子进程关闭写端。父进程可以往管道里写,子进程可以从管道里读,数据从写端流入,从读端流出,这样就实现了进程间通信。
本文共计1120个文字,预计阅读时间需要5分钟。
概述+管道是Unix操作系统的初始进程间通信(IPC)方式,其局限在于没有命名(无命名的管道FIFO)。因此,只能由有亲缘关系的进程使用,例如父子进程。管道和FIFO都通过read和write函数访问。
概述
管道是最初的Unix 进程间通信(IPC)的方式,它的局限在于没有名字(有名管道FIFO下节讲),从而只能由有亲缘关系的进程间使用,例如父子进程。管道和FIFO都是使用read和write函数访问的。
管道由pipe函数创建,提供一个单向的数据流
#include <unistd.h>
int pipe(int pipefd[2]);
函数返回两个文件描述符,fd[0]和fd[1],0用于读,1用于写。
调用pipe函数会在内核中开辟一块缓存区用于通信,一个读端,一个写端,fd[0]指向读端,fd[1]指向写端。
父子进程如何通过管道实现通信?
1、父进程调用pipe开辟管道,得到两个文件描述符指向管道的两端;
2、父进程调用fork创建子进程,子进程有两个文件描述符指向同一管道;
3、父进程关闭读端,子进程关闭写端。父进程可以往管道里写,子进程可以从管道里读,数据从写端流入,从读端流出,这样就实现了进程间通信。

