pipe_cmd.c

来自「关于进程间通信的代码集锦2」· C语言 代码 · 共 72 行

C
72
字号
#include <unistd.h>#include <sys/types.h>#include <errno.h>int main(){	int pipe_fd[2];	pid_t pid;	char r_buf[4];	char** w_buf[256];		int childexit=0;	int cmd;	int i;		memset(r_buf,0,sizeof(r_buf));	if(pipe(pipe_fd)<0)	{		printf("pipe create error\n");		return -1;	}	if((pid=fork())==0)	{		printf("In child process\n");				close(pipe_fd[1]);		while(!childexit)		{				read(pipe_fd[0],r_buf,4);			cmd=atoi(r_buf);			if(cmd==0)				{					printf("child:receive command from parent over\n now child process exit\n");				childexit=1;			}			else if(handle_cmd(cmd)!=0)			{				return;			}			sleep(1);		}		printf("sdfsdfsd");		close(pipe_fd[0]);		exit(0);	}	else if(pid>0)	{				printf("In parent process\n");		close(pipe_fd[0]);		w_buf[0]="003";		w_buf[1]="005";		w_buf[2]="777";		w_buf[3]="000";				for(i=0;i<4;i++)		{			write(pipe_fd[1],w_buf[i],4);		}		sleep(5);		close(pipe_fd[1]);	}	return 0;}int handle_cmd(int cmd){	if((cmd<0)||(cmd>256))	{		printf("child:invalid command\n");		return -1;	}	printf("child:the cmd from parent is %d\n",cmd);	return 0;}

⌨️ 快捷键说明

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