您的位置:首页 > 运维架构 > Linux

pipe,父子进程实现读写交换数据(linux)

2015-04-13 15:13 330 查看
#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <sys/types.h>

#include <string.h>

void child_rw_pipe(int readfd,int writefd)

{

char *message1 = "from child process\n";

write(writefd,message1,strlen(message1)+1);

char message2[100]={'\0'};

read(readfd,message2,100);

printf("child read from pipe :%s\n",message2);

}

void parent_rw_pipe(int readfd,int writefd)

{

char *message1 = "from parent process\n";

write(writefd,message1,strlen(message1)+1);

char message2[100]={'\0'};

read(readfd,message2,100);

printf("parent read from pipe :%s\n",message2);

}

int main(void)

{

int childfd[2],parentfd[2];

pid_t pid;

int stat_val;

if(pipe(childfd))

{

printf("create childpipe failed!\n");

exit(1);

}

if(pipe(parentfd))

{

printf("create parentpipe failed!\n");

exit(1);

}

pid = fork();

switch(pid)

{

case -1:

printf("fork error!\n");

exit(1);

case 0:

//子进程

close(childfd[0]);

close(parentfd[1]);

child_rw_pipe(parentfd[0],childfd[1]);

exit(0);

default:

close(childfd[1]);

close(parentfd[0]);

parent_rw_pipe(childfd[0],parentfd[1]);

wait(&stat_val);

exit(0);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: