0

我在这里试图读取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 上的字符改为写入管道。有什么想法吗?

先感谢您!

4

1 回答 1

0
  1. x有一个问题:它是一个字符,它不能包含值EOF,所以行:

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

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

  2. 如果您希望逐个字符地工作,您还应该fdopen(pipe_d[1], "w")使用fputc(fp, x)来编写管道。

  3. 在写这篇文章的时候没有电话pipe(pipe_d);你发了一个吗?

  4. 没有调用 to fork(),所以有管道的读者吗?如果不是,程序将在管道填满后阻塞。

于 2013-03-24T14:10:39.740 回答