對於守護中介軟體是非常有用的。中介軟體不可能絕對的穩定而不出問題,中介軟體有可能因比較嚴重的錯誤導致當機或者程序被人為地錯誤地關閉了中介軟體。
有了這個自動守護程序的存在,這一切的問題都可以迎刃而解。
program monitor;
uses
winapi.windows,
system.sysutils,
proclib in 'proclib.pas';
varmutex, h: hwnd;
begin
mutex := winapi.windows.createmutex(nil, false, 'monitor');
if (getlasterror = error_already_exists) or (mutex = 0) then
exit;
if g_exefile = '' then
continue;
exec(g_exefile);
end;
end.
unit proclib;
inte***ce
uses
winapi.windows, system.sysutils, winapi.psapi,
winapi.tlhelp32, winapi.shellapi, winapi.messages, vcl.dialogs;
varg_exefile: string = '';
implementation
while integer(continueloop) <> 0 do
begin
if ((uppercase(extractfilename(fprocessentry32.szexefile))
= uppercase(exefilename)) or (uppercase(fprocessentry32.szexefile)
= uppercase(exefilename))) then
result := integer(terminateprocess(openprocess(process_terminate, bool(0),
fprocessentry32.th32processid), 0));
continueloop := process32next(fsnapshothandle, fprocessentry32);
end;
closehandle(fsnapshothandle);
end;
function processfilename(pid: dword): string;
varhandle: thandle;
begin
result := '';
handle := openprocess(process_query_information or process_vm_read,
false, pid);
if handle <> 0 then
trysetlength(result, max_path);
if getmodulefilenameex(handle, 0, pchar(result), max_path) > 0 then
setlength(result, strlen(pchar(result)))
else
result := '';
finally
closehandle(handle);
end;
end;
while nextproc do
begin
if procentry.th32processid <> 0 then
begin
procfilename := processfilename(procentry.th32processid);
if procfilename = '' then
procfilename := procentry.szexefile;
procedure exec(filename: string);
varstartupinfo: tstartupinfo;
processinfo: tprocessinformation;
begin
fillchar(startupinfo, sizeof(startupinfo), #0);
startupinfo.cb := sizeof(startupinfo);
startupinfo.dwflags := startf_useshowwindow;
startupinfo.wshowwindow := sw_showdefault;
if not createprocess(pchar(filename), nil, nil, nil, false,
create_new_console or normal_priority_class, nil,
pchar(extractfilepath(filename)), startupinfo, processinfo) then
exit;
waitforsingleobject(processinfo.hprocess, infinite);
end;
end.
linux 程序監控
1 ps命令 直接在linux系統中輸入 ps 結果如下 預設情況下,ps命令指揮顯示執行在當前控制台下的屬於當前使用者的程序。pid 程式的程序號 tty 程式執行的終端 time 程式執行的時間 引數 在linux系統中,程序的狀態有五種 1.執行 正在執行或在執行佇列中等待 2.中斷 休眠中,...
supervise 程序監控
daemontools讓程序保持通話 linux下程序有時候會莫名的斷掉,我在使用舊版mysql proxy的時候就時常被問題困惱,俗話說 不怕賊偷,就怕賊惦記著 程序斷掉並不可怕,可怕的是沒有任何先兆,稀里糊塗的就斷了,究其原因,一來可能是誤操作引起來的,二來可能是軟體本身的bug造成的,三來也可...
windows程序監控
最近開發乙個程序監控的服務,由於對windows api不熟,所以折騰了小兩周才完全跑通,特記錄一下 1由於需求需要根據程序名來進行監控,所以首先要根據程序名來獲取程序控制代碼 同名程序可能有多個,比如,起了多個notepad.exe 通過程序名獲取程序控制代碼集 返回值為 同名程序個數 不超過20...