我在这里试图读取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上的字符写入管道中。任何想法吗?
提前感谢!
-
x有一个问题:它是一个字符,它不能包含值EOF,下面这行:
while((x = fgetc(file)) != EOF)
总是求值为true,使程序永远运行。将x声明为
int
将解决这个问题。 -
如果您希望在每个字符的基础上工作,您还应该使用
fdopen(pipe_d[1], "w")
和fputc(fp, x)
来编写管道 -
目前没有对
pipe(pipe_d)
的调用;你发了吗? -
没有对
fork()
的调用,所以有管道的读取器吗?如果没有,程序将在管道填满后阻塞。