pipe
注:pipe函数创建无名管道
1、pipe函数读阻塞
#include <stdio.h>
#include <unistd.h>
int main()
{
int fd[2];
int ret;
char read_buf[128] = {0};
char write_buf[] = "hello linux\n";
ret = pipe(fd);
if(ret < 0)
{
pERROR("create pipe failed\n");
return -1;
}
printf("fd[0] = %d,fd[1] = %d \n",fd[0],fd[1]);
write(fd[1],write_buf,sizeof(write_buf));
read(fd[0],read_buf,128); //此时读过之后,无名管道便为空的,当再次读时,则会阻塞
printf("read data from pipe %s",read_buf);
printf("second read before \n");
read(fd[0],read_buf,128);
printf("second read after \n");
close(fd[0]);
close(fd[1]);
return 0;
}
2、pipe函数写阻塞
#include <stdio.h>
#include <unistd.h>
int main()
{
int fd[2];
int i;
int ret;
char read_buf[128] = {0};
char write_buf[] = "hello linux\n";
ret = pipe(fd);
if(ret < 0)
{
perror("create pipe failed\n");
return -1;
}
printf("fd[0] = %d,fd[1] = %d \n",fd[0],fd[1]);
i =0;
while(i < 5041)
{
write(fd[1],write_buf,sizeof(write_buf)); //此时因为只有写,而没有读,因此便阻塞在了下一步读,要解决这个问 //read(fd[0],read_buf,128); //题,只需加上这两句代码即可
//printf("read data from pipe %s",read_buf);
i++;
}
return 0;
}
相关阅读
作为一个程序员出生的Matlab学习者,不能定义函数那简直是受不了!! 最重要的一点! 定义函数的时候,很多时候都会很迷的一般,使用不了
首先我们来了解一下所谓的僵尸进程,僵尸进程就是两个进程,一个父进程,一个子进程,其子进程终止后,0-3G的用户内存被回收,而3-4G的部分内
问题描述:Linux+JDK1.7+Tomcat7+mysql部署的WEB项目,线上时常抛出该异常(文章底部有解决方案)。org.apache.catalina.connector.Clien
C/C++ 学习笔记:istringstream、ostringstream、string
0、C++的输入输出分为三种:(1)基于控制台的I/O(2)基于文件的I/O(3)基于字符串的I/O 1、头文件[cpp] view plaincopyprint? #incl
在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(