有能解释一下这段代码的嘛

计算机操作系统课上给的代码,看不懂哇,有没有能解释一下的,急!!

#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;

}

说实话,我也没看懂。但我知道你这代码给少了