我正在看如何編寫管道,並試圖瞭解標準c庫如何在一些細節中公開它們。我寫了下面的代碼,並預計輸出將是爲什麼這段代碼不會從管道讀取數據?
2 3
MAJOR ERROR
BYE
但是第二行不顯示。有人可以解釋爲什麼會發生?
int main()
{
int rc;
int p[2];
char buffer[40];
close(2);
rc = pipe(p);
printf("%d %d\n", p[0], p[1]);
FILE* pipeWrite = fdopen(p[1], "w");
fprintf(pipeWrite, "MAJOR ERROR\n");
close(p[1]);
rc = read(p[0], buffer, 40);
buffer[rc] = '\0';
printf("%s\n", buffer);
printf("BYE\n");
return 0;
}
謝謝。
管道是IPC工具之一。你的其他過程在哪裏? – 2011-03-08 06:58:23
真的有必要嗎?我相信我在技術上允許將它們用作簡單的文件描述符。我知道這絕不會在實際環境中完成,但我正在這樣做,以簡單理解它們是如何工作的。 – 2011-03-08 06:59:47