pipe_sample.c

来自「linux下有命管道和无名管道的使用。以及管道读写规则」· C语言 代码 · 共 59 行

C
59
字号
#include <unistd.h>#include <stdio.h>#include <string.h>#include <sys/types.h>#include <signal.h>#include <fcntl.h>void sig_handle(int signum){	printf("signal number is %d\n",signum);}int main(int argc,char *argv[]){	int fd[2];	pid_t child;	char buffer[6000];	char r_buffer[6000];	int write_count=0;	int read_count=0;	if (pipe(fd)==-1)	{		//perror("pipe:");		printf("error!\n");		return -1;	}	strcpy(buffer,"this pipe sample!");	signal(SIGPIPE,sig_handle);	child=fork();	if (child==0)	{		close(fd[1]);		sleep(5);		printf("ready read data!\n");		read_count=read(fd[0],r_buffer,sizeof(r_buffer));						//close(fd[0]);		/*sleep(5);		read_count=read(fd[0],r_buffer,sizeof(r_buffer));		printf("%s",r_buffer);		close(fd[0]);		*/		exit(1);				}	else if (child>0)	{		sleep(2);		close(fd[0]);		fcntl(fd[1],F_SETFL,O_NONBLOCK);		write_count=write(fd[1],buffer,sizeof(buffer));		close(fd[1]);		//sleep(2);	}	printf("you writed %d byte\n",write_count);	return 0;	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?