将包含文件描述符的文本文件读入管道

时间:2013-03-23 14:50:47

标签: c file file-descriptor

我在这里试图读取 fileDesc 的内容,它是一个文件描述符,指向文本文件到管道的一端* pipe_d [1] *当时有一个字符。这样可以正确地打印文件中的字符,但我相信我的 write()会尝试将字符的内存地址写入管道而不是字符,如果我这样做的话。

char x;
FILE *file;
file = fdopen(fileDesc, "a+");

while((x = fgetc(file)) != EOF)
{
  printf("%c", x);

  write(pipe_d[1], &x, sizeof(x));
}

我希望将位于& x上的字符写入管道。有什么想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

  1. x有一个问题:它是一个char,它不能包含值EOF, 这一行:

    while((x = fgetc(file)) != EOF)
    

    将始终评估为true,使程序永远运行。 将x声明为int将解决此问题。

  2. 如果您希望以char-by-char为基础,还应fdopen(pipe_d[1], "w")并使用fputc(fp, x)来编写管道。

  3. 此时此时没有致电pipe(pipe_d);你发了一个吗?

  4. 没有fork()的电话,那么管道的读者是谁?如果不是,程序将在管道填满后阻塞。