管道(pipe)、命名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)
--------------------------------------------------------------------------------------
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
/*父进程通过管道传输两个数据给子进程
*由子进程负责从管道中读取并输出
*/
int main()
{
int fd[2]; //fd[0] fd[1]
//创建管道
if(pipe(fd)<0)
{
perror("pipe error");
exit(1);
}
pid_t pid;
if((pid = fork()) < 0)
{
perror("fork error");
exit(1);
}
else if(pid >0) //parent process
{
close(fd[0]);//父进程用来写入数据
int start =1,end = 100;
if(write(fd[1],&start,sizeof(int))!=sizeof(int))
{
perror("write error");
exit(1);
}
if(write(fd[1],&end,sizeof(int))!=sizeof(int))
{
perror("write error");
exit(1);
}
close(fd[1]);
wait(0); //等待子进程结束
}
else //child process
{
close(fd[1]);//子进程用来读取数据
int start,end;
if(read(fd[0],&start,sizeof(int)) < 0)
{
perror("write error");
exit(1);
}
if(read(fd[0],&end,sizeof(int)) < 0)
{
perror("write error");
exit(1);
}
close(fd[0]);
printf("child process read start:%d,end:%d\n",start,end);
}
exit(0);
}
原文:http://www.cnblogs.com/lvdh1314/p/6508731.html