linuxプロセス無名パイプ通信

1256 ワード

linuxプロセス無名パイプ通信
親子プロセスの通信
#include
#include
#include
#include

void pipe_read(int pipes[]);
void pipe_write(int pipes[]);

int main()
{
	int pipes[2];       //      ,pipes[0]   , pipes[1]   
	pid_t pid;       // pid_t    
	int rc;

	/*               */

	rc = pipe(pipes);   //     ,      0,     -1
	if(rc == -1){
		perror("pipes
"); exit(1); } pid = fork(); // fork() , , 0, Id // -1 switch(pid){ case -1: // perror("fork
"); exit(1); case 0: // pipe_read(pipes); default: // pipe_write(pipes); } return 0; } void pipe_read(int pipes[]) // { int c; int rc; close(pipes[1]); // /* ssize_t read(int fd,void *buf,size_t count) */ while((rc = read(pipes[0], &c, 1)) > 0){ putchar(c); } close(pipes[0]); exit(0); } void pipe_write(int pipes[]) // { int c; int rc; close(pipes[0]); // while((c = getchar()) > 0){ rc = write(pipes[1], &c, 1); if(rc == -1){ perror("Parent: write"); close(pipes[1]); exit(1); } } close(pipes[1]); exit(0); }