论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

利用管道进行进程的通信示例

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:44:56

这里用到了 pipe 管道函数:
int pipe(int file_des criptor[2]);
函数 pipe 填充的两个整数的含义是两个文件描述符,任何向 file_des criptor[1] 写入的数据,可以从 file_des criptor[0] 中读取,并且写入的数据符合先入先出的规则.

例 pipe.c:

#include
#include
#include
#include

int main()
{
int data_processed;
int file_pipes[2];
const char some_data[]="123";
char buffer[BUFSIZ+1];
int fork_result;

memset(buffer,'\\0',sizeof(buffer));

if(pipe(file_pipes)==0){
fork_result=fork(); /* 设置进程 */
if (fork_result==-1){
/* 判定设置进程是否出错 */
fprintf(stderr,"Fork failure");
exit(EXIT_FAILURE);
}

/* 下面判定,若是是子进程则读管道数据,父进程则向管道写数据 */

if(fork_result==0){
/* 判定是否子进程 */
data_processed=read(file_pipes[0],buffer,BUFSIZ);
/* 从管道读数据 */
printf("Read %d bytes:%s\n",data_processed,buffer);
exit(EXIT_SUCCESS);
} else {
/* 父进程 */
data_processed=write(file_pipes[1],some_data,strlen(some_data));
/* 向管道写数据 */
printf("Wrote %d bytes\n",data_processed);
}
}
exit(EXIT_SUCCESS);
}

程序运行:./pipe
执行结果:
Wrote 3 bytes
Read 3 bytes:123
利用管道进行通信成功!^o^
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058