实验五;管道通信
1. 阅读以下程序,编译并运行程序,分析程序执行过程和结果,注释程序主要语句。
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include ”apue.h” //err_quit 函数的头文件
main()
{
int filedes[2];
char buffer[80];
/* pipe()会建立一个管道,并将文件描述词由参数 filedes 数组返回。filedes[0]为管道里的读
取端,filedes[1]则为管道的写入端。若成功则返回零,否则返回-1。*/
if(pipe(filedes)<0) //如果创建管程失败
err_quit(“pipe error”); //err_quit:错误处理函数
if(fork()>0){ //创建子进程成功
//进入父程序
char s[ ] = “hello!”;
close(filedes[0]); //关闭管道的读取端
write(filedes[1],s,sizeof(s)); //把字符串 s 写入管道。
close(filedes[1]); //关闭管道的写入端
}
else{
//进入子程序
close(filedes[1]); //关闭管道的写入端
read(filedes[0],buffer,80);//从管道读取端读取 80 字节数据并保存到 buffer 里
printf(“%s”,buffer);
close(filedes[0]); //关闭管道的读取端
}
}
评论0