一、以前用

pid := FpFork;
if pid = 0 then
begin
// 主循环
end
else
begin
Halt; // 父进程退出
end;

发现有的系统能运行。有的系统退出终端后运行一会就自动退出。

也可以使用

nohup ./your_program &

或是

nohup ./mysql_nginx_monitor > /dev/null 2>&1 &

可以运行。

二、用

fpSignal(SIGPIPE, @SignalSIGPIPEHandler);
fpSignal(SIGHUP, @SignalSIGHUPHandler);

procedure SignalSIGPIPEHandler(sig: longint); cdecl;
begin
end;

procedure SignalSIGHUPHandler(sig: longint); cdecl;
begin
end;

 

可以设置退出时执行。

三、现在用

pid := FpFork;
if pid > 0 then Halt; // 第一次 fork:父退出,子成为孤儿

FpSetsid; // 创建新会话,子进程成为会话 leader

pid := FpFork;
if pid > 0 then Halt; // 第二次 fork:新子进程不再是会话 leader

begin

// 主循环

end;

posted on 2025-11-06 20:38  禁卫军  阅读(2)  评论(0)    收藏  举报