監控指定程序

2021-09-07 22:32:28 字數 2596 閱讀 3593

對於守護中介軟體是非常有用的。中介軟體不可能絕對的穩定而不出問題,中介軟體有可能因比較嚴重的錯誤導致當機或者程序被人為地錯誤地關閉了中介軟體。

有了這個自動守護程序的存在,這一切的問題都可以迎刃而解。

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...