Почему этот код печатается два раза? [дубликат]
Возможные Дубликаты:
работа fork () в linux gcc
#include <stdio.h>
void main ()
{
printf ("ciao");
fork ();
}
у меня есть некоторые идеи по оптимизации C, но я не уверен. Надеюсь, ты знаешь ответ.
2 ответов
код, вероятно, напечатает "ciao"
дважды стандартный вывод буферизуется IO, поэтому внутренний буфер для стандартного вывода будет реплицирован в дочернем процессе, и оба буфера будут сброшены при выходе каждого процесса, родительского и дочернего.
это не связано с оптимизацией.
когда fork() вызывается, как родительский, так и дочерний процесс наследуют его, и поэтому они оба будут
распечатайте "ciao", когда они очистят буфер. Если вы вызываете fflush (stdout);
перед вызовом fork он будет печатать только один раз