Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Забавная задачка-шутка


Автор: VectorMan 9.4.2006, 22:17
сколько раз будет выведено Hello и почему?

Код

int main () {
  printf("Hello\n");
  fork();
  printf("Hello\n");
  return 0;
}

Автор: Бонифаций 9.4.2006, 22:22
по идее 3. Первый раз до форка, и потом по разу из родительского и детского процесса

Автор: VectorMan 9.4.2006, 22:37
ответа я не знаю, но имхо 4. stdout буферизируемый поток, после первого принтф строка не обязательно отправляется на консоль, в файл или ещё куда-либо, поэтому дочерний процесс получит не пустой буфер, а со строкой, следовательно в дочернем процессе Hello будет выведено дважды

Автор: GrayCardinal 10.4.2006, 06:12
Не знаю как у вас, а у меня три smile
А вообще, по идее, может и два раза, если форк не сработает.
Теоретически 4 тоже может получиться ;) Так что лучше ставить fflush в таких случаях.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)