WEB开发网
开发学院软件开发C++ 利用管道进行进程的通信示例 阅读

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

 2008-03-08 12:44:14 来源:WEB开发网   
核心提示:这里用到了 pipe 管道函数: int pipe(int file_descriptor[2]); 函数 pipe 填充的两个整数的含义是两个文件描述符,任何向 file_descriptor[1] 写入的数据,可以从 file_descriptor[0] 中读取,并且写入的数据符合先入先出的规则. 例 pipe.c

  这里用到了 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^

Tags:利用 管道 进行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接