Я смотрю на то, как писать каналы, и пытаюсь понять, как стандартная библиотека 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;
}
Спасибо.