下载此文档

7.进程通信(管道).ppt


文档分类:通信/电子 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
进程间通信—管道 1 2掌握知识点?1、管道的概念及应用?2、无名管道与命名管道的区别 3管道的概念?我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”。通常是把一个进程的输出连接到另一个进程的输入。?两个进程之间的管道与水管装置的一段管道相似。当创建管道时,在写进程和读进程之间就形成了一个数据管线。 4例?我们在终端执行以下命令: ? ls -l | wc –l ?该命令首先创建两个进程,一个对应于 ls –1,另一个对应于 wc –l。然后,把第一个进程的标准输出设为第二个进程的标准输入。它的作用是计算当前目录下的文件数量。 5无名管道的特点?管道是 Linux 支持的最初 Unix IPC 形式之一,具有以下特点: ?1、管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2、只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 3、单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,并且只存在与内存中。 4、数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。 6管道的创建?#include <> ? int pipe(int fd[2]) ?当调用成功时,函数 pipe 返回值为 0,否则返回值为-1。成功返回时,数组 fd被填入两个有效的文件描述符。数组的第一个元素(fd[0]) 中的文件描述符供应用程序读取之用,数组的第二个元素(fd[1]) 中的文件描述符可以用来供应用程序写入。 7 popen 函数? Popen 函数创建管道进行进程间通信时, 不需要像前面程序中那样依次调用 pipe 、 fork 等函数。可以说,使用 popen 函数极大地简化了管道的使用。? FILE * popen(const char * command, const char * type) ? Popen 函数通过调用 pipe 函数创建一个单向通信管道,并调用 fork 函数创建新的子进程。最后启动 shell ,在 shell mand 中的命令。参数 type 用于指定是读取管道的权限, ? popen 函数返回的指向 FILE 的指针必须使用 pclose 函数关闭,不能使用 fclose 函数关闭。 8 pclose 函数?使用 popen 函数返回的 FILE 指针必须使用 pclose 函数关闭,函数声明: ? int pclose(FILE * stream) ? pclose 函数将等待使用管道的结束,然后关闭文件流。 9命名管道?命名管道,又被称为 FIFO ( first-in,first- out), 作为特殊的设备文件存在于文件系统中。进程可以像访问设备文件一样, 使用 open 或 close 打开或关命名管道。命名管道严格遵循先进先出的原则。 10 命名管道的创建?创建命名管道的函数为: ? int mkfifo(const char * pathname, mode_t mode) ?函数成功返回 0,失败返回-1; ?参数 pathname 用于指定创建出的 FIFO 文件名称。参数 mode 用于指定创建出的文件权限。?当创建完 FIFO 文件后,可以像访问正常文件一样访问创建的 FIFO 文件。如果打开 FIFO 文件进行数据读取时, 没有其他进程向 FIFO 中写入数据,进程将处于阻塞状态。同样,在写入数据的同时,没有进程从 FIFO 中读取数据,进程也会处于阻塞状态。

7.进程通信(管道) 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人endfrs
  • 文件大小0 KB
  • 时间2016-04-12