The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Hello world ?????"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Hello world ?????"
Сообщение от zorg emailИскать по авторуВ закладки on 02-Дек-01, 23:34  (MSK)
есть програмка
{
   printf ("Hello");
if(fork()==0)
   printf("world");
exit(0);
}

На экране получаю Hello world Hello. Откуда взялся второй Hello? Если пишу printf("Hello\n"); Получаю Hello world.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Hello world ?????"
Сообщение от Shurik emailИскать по авторуВ закладки on 03-Дек-01, 16:10  (MSK)
прикол в том, что printf не сразу выводит на терминал, а сначала сбрасывает в буфер. Соответсвенно child наследует все, включая буфер...

а буфер на терминал скидывается при завершении проги или при достижении симола '\n'

В буфере парента имеем "hello" в буфере чайлда "hello world" .. вот и получается слова hello два раза...

модифицируй немного прогу и увидишь... например так:

{
   printf (" Hello ");
   if(fork()==0){
      printf (" child start ");
      printf(" world ");
   }
   printf (" end ");
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Hello world ?????"
Сообщение от ZORG Искать по авторуВ закладки on 03-Дек-01, 17:52  (MSK)
SPASIBO!!!
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру