#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <limits.h>
#include <string.h>
#include <errno.h>
#define BUFSIZE 4096 //定义一个最大的读写空间
int main(void)
{
int fd[2];
char buf[BUFSIZE] = "hello!I am your brother!\n"; // 缓冲区
pid_t pid;
int len;
if ( (pipe(fd)) < 0 ) //创建管道
{
perror("pipe failed\n");
}
if ( (pid = fork()) < 0 ) //创建第一个子进程
{
perror("fork failed\n");
}
else if ( pid == 0 ) //子进程
{
close ( fd[0] ); //关闭不使用的文件描述符
write(fd[1], buf, strlen(buf)); //发送字符串
exit(0);
}
if ( (pid = fork()) < 0 ) //创建第二个子进程
{
perror("fork failed\n");
}
else if ( pid > 0 ) //父进程
{
close ( fd[0] );
close ( fd[1] );
exit ( 0 );
}
else //第二个子进程中
{
close ( fd[1] ); //关闭管道文件描述符
len = read (fd[0], buf, BUFSIZE); //读取消息
write(STDOUT_FILENO, buf, len); //将消息输出到标准输出
exit(0);
}
return 0;
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。