Как я понял, fork() создает дочерний процесс, копируя образ родительского процесса.fork() и printf()
Вопрос о том, как дочерние и родительские процессы совместно используют поток stdout?
Может ли функция printf() одного процесса прерываться другими или нет? Это может вызвать смешанный выход.
Или это функция выхода printf()?
Например:
Первый случай:
parent: printf("Hello");
child: printf("World\n");
Console has: HeWollorld
Второй случай:
parent: printf("Hello");
child: printf("World\n");
Console has: HelolWorld
Он не пишет трубку, он (скорее всего) пишет на терминал. Таким образом, даже запросы на запись, меньшие, чем PIPE_BUF, не гарантируются атомом. –