手机版

实验4进程间通信:管道

时间:2025-04-23   来源:未知    
字号:

Linux学习之实验篇共 7篇

实验六、七 进程间通信:管道

一、 实验目的

1.了解 UNIX 管道的相关函数。

2.了解UNIX 管道的建立与使用。

3.能编写简单管道程序。

二、 实验预备知识

1.什么是管道

我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”。我们通常是把一个进程的输出连接或“管接”(经过管道来连接)到另一个进程的输入。

2.进程管道

(1)popen函数

popen函数允许一个程序把另外一个程序当做一个新的进程来启动,并能对它发送数据或者接收数据。

格式:#include<stdio.h>

FILE *popen(command”,”open_mode”其中,command参数是待操作的命令 open_mode参数的值有r和w两种:

r为读操作,表示是读入command参数提供的命令执行结果后,输出。 w为写操作,表示是向command参数提供的命令进行写操作,即为其提供输入信息,然后将这个命令的执行结果输出。有向命令提供输入信息时,使用的是fwrite函数,其格式:fwrite(信息源,信息源类型长度,信息源的长度,写入对象)。如:想把buffer这个已定义的数组变量中的信息写入popen函数,作为popen函数中command参数提供的命令的输入信息,且buffer为字符型数组,则可表示为:首先,将popen函数的结果赋给一个变量write_fp: write_fp=popen(“od –c”, “w”);

然后,用fwrite函数指定popen的写操作的信息来源:

fwrite(buffer, sizeof(char) , strlen(buffer),write_fp);

(2)pclose函数

格式:#include<stdio.h>

int pclose(文件指针)

功能:当用popen启动的命令完成了操作的时候,我们可用pclose关闭与之关联的文件流。Pclose调用只有在popen启动的进程结束之后才能返回。如果在调用pclose的时候它仍在运行,pclose将等待该进程的结束。 如:上例中已将od –c命令运行。现要结束该命令,则用: pclose(write_fp);

(3)pipe函数

通过它在两个程序之间传递数据时不需要启动一个shell来解释给定的命令,降低了程序的运行成本;我们对数据读、写操作的控制也加强了。 格式:#include<unistd.h>

int pipe(int file_descriptor[2]);

实验4进程间通信:管道.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)