есть програмка
{
printf ("Hello");
if(fork()==0)
printf("world");
exit(0);
}На экране получаю Hello world Hello. Откуда взялся второй Hello? Если пишу printf("Hello\n"); Получаю Hello world.
прикол в том, что printf не сразу выводит на терминал, а сначала сбрасывает в буфер. Соответсвенно child наследует все, включая буфер...а буфер на терминал скидывается при завершении проги или при достижении симола '\n'
В буфере парента имеем "hello" в буфере чайлда "hello world" .. вот и получается слова hello два раза...
модифицируй немного прогу и увидишь... например так:
{
printf (" Hello ");
if(fork()==0){
printf (" child start ");
printf(" world ");
}
printf (" end ");
}
SPASIBO!!!