delphi 双进程守护

本文通过一个寓言式的父子故事,介绍了使用Pascal语言实现的一个简单程序,该程序展示了父进程与子进程间的循环替代过程。父进程在创建子进程后等待自身被“取代”,而子进程则无限循环尝试启动新的父进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个关于父亲与儿子的故事:

父亲的一生:①生一个儿子。如果儿子被杀了,再生一个!
             ②工作。

儿子的一生:等着父亲被杀,取而代之(成为父亲)。

这则故事已经完整地表达了我想要表达的全部思想,我们可以通过假设“父亲被杀了”或“儿子被杀了”来领会它。

废话少说,看源码:

program Oliver;

uses
   Windows;

procedure WaitForAncestor;
var
   MutexName: String;
   MutexHandle: THandle;
begin
   MutexName := '110';
   MutexHandle := OpenMutex(SYNCHRONIZE, True, PChar(MutexName));
   if (MutexHandle <> 0) then
   begin
     WaitForSingleObject(MutexHandle, INFINITE);
     CloseHandle(MutexHandle);
   end;
   CreateMutex(nil, True, PChar(MutexName));
end;

procedure RunSuccessor;
var
   StartupInfo: TStartupInfo;
   ProcessInfo: TProcessInformation;
begin
   while (True) do
   begin
     CreateProcess(PChar(ParamStr(0)), nil, nil, nil, True, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo);
     WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
   end;
end;

begin
   WaitForAncestor;
   RunSuccessor;
end.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值