Linux无名管道通信介绍

Linux下无名管道一般仅用于父子进程间的通信;

测试代码如下

//file name: fifo_test.c
#include <sys/prctl.h>
#include "fifo_test.h"


int 
main(int argc, char **argv)
{
	int ret = 0;
	char buf[32] = {''};
	int pipe_fd[2]; //0---read 1--write
	pid_t pid;
	
	if(pipe(pipe_fd)<0)
	{
		printf("pipe create error/n");
		return -1;
	}
	if((pid=fork())==0)  //子进程
	{	
		close(pipe_fd[0]);
		prctl(PR_SET_NAME, "child");
		while(1)
		{	
			strcpy(buf, "hi, from child process!");
			ret=write(pipe_fd[1],buf,sizeof(buf));
			sleep(3);//
		}
	}

	close(pipe_fd[1]);
	while(1)
	{
		ret=read(pipe_fd[0],buf,sizeof(buf));
		printf("father process, recv msg: %s
",buf);
	}	

	return 0;
}

编译

gcc -c fifo_test.c -o fifo_test.o -Wall -g 
gcc fifo_test.o  -o fifo_test -Wall -g 

执行结果

./fifo_test 
father process, recv msg: hi, from child process!, len: 32
father process, recv msg: hi, from child process!, len: 32
father process, recv msg: hi, from child process!, len: 32
原文地址:https://www.cnblogs.com/fensnote/p/13436454.html