Маленькая задачка для C программистов

Jul 25, 2007 11:40


Мой коллега Александр Сортов поделился маленькой задачкой для C программистов:
Попробуйте без компьютера сообразить, сколько слов «before» и «after» будет напечатано после выполнения этого кода?

#include   int main() { int pid; printf("before"); pid = fork(); printf("\nafter"); if(pid == 0) { _exit(); } printf("\n"); }
На первый взгляд, печатается «before», далее из одного процесса получаются два, оба они печатают «after». Всё не так просто - «before» может остаться в буфере и напечататься в обоих процессах. И наоборот, один из «after» так и останется в буфере, когда процесс завершится вызовом _exit ().
Так что возможен и строго обратный результат - два «before» и один «after»

Я попался на первоначальную версию, ответив 1 и 4:

#include   int main() { printf("\nbefore"); fork(); fork(); printf("\nafter"); }
Из блога софт, хард & интERнет

Разработка, c, Языки

Previous post Next post
Up