#include <stdio.h>
#include <unistd.h>
int main()
{
int fd[2];
int a,b;
if ( pipe(fd) == 0 ) {
int pid ;
if ( (pid=fork()) >= 0 ) {
if (pid == 0) { // child
int arr[2] = {0};
printf("child pid is %d\n",getpid());
printf("input a :");
scanf("%d",&a);
printf("input b :");
scanf("%d",&b);
arr[0]=a;
arr[1]=b;
printf("...begin writing...\n");
write(fd[1], arr, sizeof(int)*2);
}else{
int arr[2] = {0};
read(fd[0], arr, sizeof(int)*2);
printf("parent pid is %d\n",getpid());
printf("a=%d b=%d\n", arr[0], arr[1]);
printf("a+b=%d\n",arr[0]+arr[1]);
}
}
}
return 0;
}
子进程和父进程之间的通信,通过管道pipe(fd)实现,fd[0]指向管道的读端,fd[1]指向管道的写端。
运行结果: