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

王朝other·作者佚名  2008-06-01
宽屏版  字体: |||超大  

这里用到了 pipe 管道函数:

int pipe(int file_descriptor[2]);

函数 pipe 填充的两个整数的含义是两个文件描述符,任何向 file_descriptor[1] 写入的数据,可以从 file_descriptor[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(EX99v_FAILURE);

}

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

if(fork_result==0){

/* 判定是否子进程 */

data_processed=read(file_pipes[0],buffer,BUFSIZ);

/* 从管道读数据 */

printf("Read %d bytes:%s\n",data_processed,buffer);

exit(EX99v_SUCCESS);

} else {

/* 父进程 */

data_processed=write(file_pipes[1],some_data,strlen(some_data));

/* 向管道写数据 */

printf("Wrote %d bytes\n",data_processed);

}

}

exit(EX99v_SUCCESS);

}

程序运行:./pipe

执行结果:

Wrote 3 bytes

Read 3 bytes:123

利用管道进行通信成功!^o^

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有