значит запускаю демона так :
- Код: Выделить всё
{ 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 столько точек входа ? чтот совсем запутолся, пошел ка я до дому.