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);
}