silberschatz
, fork() ... , ! ( , !)
, ( fork() ..) , , ,
ls | sort
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#define BUFFER SIZE 25
#define READ END 0
#define WRITE END 1
int main(void)
{
char write msg[BUFFER SIZE] = "Greetings";
char read msg[BUFFER SIZE];
int fd[2];
pid t pid;
if (pipe(fd) == -1) {
fprintf(stderr,"Pipe failed");
return 1;
}
pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork Failed");
return 1;
}
if (pid > 0) {
close(fd[READ END]);
write(fd[WRITE END], write msg, strlen(write msg)+1);
close(fd[WRITE END]);
}
else {
close(fd[WRITE END]);
read(fd[READ END], read msg, BUFFER SIZE);
printf("read %s",read msg);
}
}
close(fd[READ END]);
return 0;
}