无名管道系统调用

#include #include #include #include #include #include #define MAX 256 #define DELAY 1 int main() { pid_t pid; int pipe_fd[2]; //定义两个文件描述符 char buf[MAX]; //定义缓冲区大小 const char data[] = "Pipe Test Program"; //定义数据 int real_read,real_write; memset((void*)buf,0,sizeof(buf)); //清空内存区 if(pipe(pipe_fd) < 0) //创建管道 { printf("pipe create error/n"); exit(1); } if((pid = fork()) == 0) //创建一子进程 {//子进程关闭写描述符,并通过子进程暂停1s等待父进程已关闭相应的读描述符 close(pipe_fd[1]); sleep(DELAY * 3); if((real_read = read(pipe_fd[0],buf,MAX)) > 0) //子进程读取管道内容 { printf("%d bytes read from the pipe is '%s'/n",real_read,buf); } close(pipe_fd[0]); //关闭子进程读描述符 exit(0); } else if(pid > 0) {//父进程关闭读描述符,并通过使使父进程暂停1s等待子进程已关闭相应的写描述符 close(pipe_fd[0]); sleep(DELAY); if((real_write = write(pipe_fd[1],data,strlen(data))) != -1) //父进程写入管道内容 { printf("Parent wrote %d bytes:'%s'/n",real_write,data); } close(pipe_fd[1]); //关闭父进程写描述符 waitpid(pid,NULL,0); //收集子进程退出信息 exit(0); } }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值