linux之无名管道pipe
2011-09-24 17:28
295 查看
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int pipe_fd[2]; //创建管道标识符
pid_t pid;
char r_buffer[100];
char *w_buffer;
int ret;
memset(r_buffer,0,sizeof(r_buffer));
if(pipe(pipe_fd)<0) / /创建管道
{
printf("pipe create error\n");
return -1
}
if((pid=fork())==0)
{
close(pipe_fd[1]);
sleep(2);
while(1) //循环读取管道数据
{
if((ret=read(pipe_fd[0],r_buffer,100))>0)
{
printf("%d data read from the pipe is %s\n",ret,r_buffer);
}
}
close(pipe_fd[0]);
exit(0);
}
else if(pid>0)
{
close(pipe_fd[0]);
//循环写入管道
while(1){
write(pipe_fd[1],"hello everyone.",20);
}
close(pipe_fd[1]);
waitpid(pid,NULL,0);
exit(0);
}
return 0;
}
#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int pipe_fd[2]; //创建管道标识符
pid_t pid;
char r_buffer[100];
char *w_buffer;
int ret;
memset(r_buffer,0,sizeof(r_buffer));
if(pipe(pipe_fd)<0) / /创建管道
{
printf("pipe create error\n");
return -1
}
if((pid=fork())==0)
{
close(pipe_fd[1]);
sleep(2);
while(1) //循环读取管道数据
{
if((ret=read(pipe_fd[0],r_buffer,100))>0)
{
printf("%d data read from the pipe is %s\n",ret,r_buffer);
}
}
close(pipe_fd[0]);
exit(0);
}
else if(pid>0)
{
close(pipe_fd[0]);
//循环写入管道
while(1){
write(pipe_fd[1],"hello everyone.",20);
}
close(pipe_fd[1]);
waitpid(pid,NULL,0);
exit(0);
}
return 0;
}
相关文章推荐
- Linux 高级编程 - 无名管道 Pipe
- 【Linux系统编程】进程间通信--无名管道(pipe)
- linux应用编程--pipe无名管道
- Linux编程 进程间通信------无名管道(PIPE)
- linux 进程编程:无名管道pipe
- Linux--无名管道pipe示例
- linux 无名管道pipe和有名管道FIFO
- Linux下的无名管道pipe的设计
- 练习--LINUX进程间通信之无名管道PIPE
- Linux进程间通讯一--无名管道PIPE
- linux编程---进程间通信---PIPE---无名管道
- linux 无名管道pipe和有名管道FIFO
- (转)linux 无名管道pipe和有名管道FIFO
- linux下c编程之无名管道pipe()函数
- (转)linux 无名管道pipe和有名管道FIFO
- Linux进程间通信(一)之无名管道(PIPE)和有名管道(FIFO)
- Linux 进程间通讯之创建无名管道和读写无名管道
- linux中的PIPE_SIZE与PIPE_BUF,管道最大写入值问题
- Linux进程间通信方式之管道(pipe)
- Linux进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)