linux--管道pipe
在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为: · 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使
注意:从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(void)
{
intfd[2],nbytes; pid_tchildpid;
charstring[]="Hello,world!\n";
charreadbuffer[80]; pipe(fd);
if((childpid=fork())==-1) { perror("fork"); exit(1); }
if(childpid==0) { /*Child process closes up in put side of pipe*/ close(fd[0]); /*Send"string"through the out put side of pipe*/
write(fd[1],string,strlen(string));
exit(0); }
else {
/*Parent process closes up out put side of pipe*/ close(fd[1]);
/*Readinastringfromthepipe*/ nbytes=read(fd[0],readbuffer,sizeof(readbuffer));
printf("Receivedstring:%s",readbuffer); }
return(0);
}
更多推荐
所有评论(0)