a7224492 2015-04-04 15:01 采纳率: 0%
浏览 1607

apue第15章15.6这个例子实验了一下,没有任何输出?怎么回事?

 int n, fd[2];
    pid_t pid;
    pipe(fd);
    FILE *fp;
    char *pager, *argv0;
    char buff[100];
    unsigned int nread;
    if ((fp = fopen(argv[1], "r")) < 0)
        printf("open error!\n");
    if ((pid = fork() < 0))
        printf("fork error!\n");
    else if (pid > 0)
    {
        close(fd[0]);
        while (fgets(buff, 100, fp) != NULL)
        {
            nread = strlen(buff);
            if (write(fd[1], buff, nread) != nread)
                printf("fputs error!\n");
        }
        close(fd[1]);
        waitpid(pid, NULL, 0);
    }
    else if (0 == pid)
    {
        close(fd[1]);
        if (fd[0] != STDIN_FILENO)
            if (dup2(fd[0], STDIN_FILENO) != STDIN_FILENO)
                printf("dupe error!\n");
        if ((pager = getenv("PAGER")) == NULL)
            pager = "/bin/more";
        if ((argv0 = strrchr(pager, '/')) != NULL)
            argv0++;
        else
            argv0 = pager;
        if (execl(pager, argv0, (char *)0) < 0)
            printf("execl error!\n");
    }
  • 写回答

1条回答 默认 最新

  • devmiao 2015-04-04 15:15
    关注

    调试下,两个进程是否通讯正常

    评论

报告相同问题?