簡體   English   中英

在管道中讀取帶有文件描述符的文本文件

[英]read textfile with file descriptor in to a pipe

我在這里嘗試讀取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. x有一個問題:它是一個字符,不能包含值EOF,因此該行:

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

    將始終評估為true,從而使程序永遠運行。 將x聲明為int解決此問題。

  2. 如果希望按字符進行工作,則還應該fdopen(pipe_d[1], "w")並使用fputc(fp, x)編寫管道。

  3. 在編寫本文時,沒有調用pipe(pipe_d) 你發行了嗎?

  4. 沒有對fork()調用,因此管道的讀取器是否存在? 如果否,則管道填滿后程序將阻塞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM