计算机操作系统课上给的代码,看不懂哇,有没有能解释一下的,急!!
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<string.h>
void sys_err(const char *str){
perror(str);
exit(1);
}
int main(void)
{
pid_t pid;
char buf[1024];
int fd[2];
char *p = "test for pipe\n";
if(pipe(fd)== -1)
sys_err("pipe");
pid = fork();
if(pid<0){
sys_err("fork err");
}else if(pid == 0){
close(fd[1]);
int len = read(fd[0], buf, sizeof(buf));
write(STDOUT_FILENO, buf, len);
printf("Child Revd: %s[%ld]\n", p, len);
close(fd[0]);
} else {
close(fd[0]);
ssize_t writelen = write(fd[1], p, strlen(p));
printf("Parent: %s[%ld, %ld]\n",p, strlen(p), writelen);
wait(NULL);
close(fd[1]);
}
return 0;
}