выполнение приложенияв в linux из демона.

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

выполнение приложенияв в linux из демона.

Сообщение Attid » 30.03.2007 20:59:42

не понимаю как это все работает =(

значит запускаю демона так :
Код: Выделить всё
   { daemonize }
   pid := fpFork;
   Case pid of
      0 : Begin { we are in the child }
         { close standard error и прочее}
      End;
      -1 : secs := 0;     { forking error, so run as non-daemon }
      Else Halt;          { successful fork, so parent dies }
   End;

ниже обработка сигналов и прочий код

значит если я ниже запущу fpFork он мне всегда будет возрощать 0
но если ниже по коду я вызываю
ExecuteProcess
который в свою очередь делает тоже самое
Код: Выделить всё
  pid:=fpFork;
  if pid=0 then
   begin
     {The child does the actual exec, and then exits}
      fpexecl(Path,Comline);
     { If the execve fails, we return an exitvalue of 127, to let it be known}
     fpExit(127);
   end
  else
   if pid=-1 then         {Fork failed}
    begin
      e:=EOSError.CreateFmt(SExecuteProcessFailed,[Path,-1]);
      e.ErrorCode:=-1;
      raise e;
    end;


соответственно с моего предстовления он никогда не должен дойти до этого кода, но работает =/
или Fork не просто создает копию процесса а еще и передает точку входа в эту копию и соответственно сколько раз вызовов Fork столько точек входа ? чтот совсем запутолся, пошел ка я до дому.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Alexander » 30.03.2007 23:45:36

После форка указатель команд указывает на следующую после форка
команду в обоих процессах. Различить друг друга могут только по pid.
Процессы порождённые форком - самостоятельные задачи с точки зрения
процессора.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 821
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение Attid » 31.03.2007 10:04:08

еще вопрос, как определить пид нового процесса из предка ?
видел команды определения родительского пида, а вот пида ребенка нет =/

а вообще интересно там все сделано =) мне начинает линукс нравится =) с программистской точки зрения.

ой что-то я стормазил, =) он fork же и возрощает его =/
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru