Linnux无名管道的创建例子
来源:互联网 发布:js控制div滚动条位置 编辑:程序博客网 时间:2024/05/20 06:28
例子:创建一个进程两个管道从一管道写入小写字符串,另一管道读出大写字符串
#include <stdio.h>#include<unistd.h>#include<sys/types.h>#include<errno.h>#include<string.h>#include<stdlib.h>int main(){int fd[2],fd1[2];pid_t pid,pid1;char r_buf[100];char w_buf[100];char buf[100];char *p_wbuf;int r_num,i;memset(r_buf,0,sizeof(r_buf));memset(w_buf,0,sizeof(w_buf));p_wbuf=w_buf;if(pipe(fd)<0){printf("pipe create error!\n");return -1;}if(pipe(fd1)<0){printf("pipe fd1 create error!\n");return -1;}if((pid = fork())==0){close(fd[1]);close(fd1[0]);sleep(3);if((r_num=read(fd[0],r_buf,100))>0){printf("%d num from to pipe is %s\n",r_num,r_buf);}for(i=0;i<r_num;i++){r_buf[i] -= 32;}if(write(fd1[1],r_buf,r_num)==-1){printf("write fd1[1] successful!\n");}close(fd1[1]);close(fd[0]);exit(0);}else if(pid>0){close(fd[0]);close(fd1[1]);sleep(1);printf("input string:");scanf("%s",w_buf);write(fd[1],w_buf,strlen(w_buf));sleep(1);if(r_num=read(fd1[0],w_buf,100)>0);{printf("from to pipe is %s\n",w_buf);}close(fd[1]);close(fd1[0]);waitpid(pid,NULL,0);}return 0;}
0 0
- Linnux无名管道的创建例子
- 创建无名管道
- 无名管道的用法
- 无名管道的使用
- 无名管道的通信
- 无名管道创建和读写
- 无名管道pipe的读写
- 无名管道的C++封装
- 无名管道的C++封装
- Linux下的无名管道
- 无名管道的父子通信
- 无名管道pipe的使用
- 无名管道pipe的使用
- 无名管道pipe的使用
- 有名管道和无名管道的区别
- 有名管道和无名管道的区别
- 有名管道和无名管道的区别
- 无名管道
- 利用LaTeX展现C++代码
- 20170325#cs231n#10.Understanding and Visualizing Convolutional Neural Networks
- 懒人后台模板
- fortify——Unreleased Resource: Streams
- mysql 索引原理
- Linnux无名管道的创建例子
- Gson使用指南(一)
- 快速排序
- nginx实现反向代理
- iOS的10个实用小技巧,mark
- java中的线程实现的两种方式
- c# xamarin环境搭建
- 多线程编程中多少线程数才是合理的?
- ADS1.2->Keil5的艰辛历程(依然有问题)