kolibrios/programs/cmm/lib/patterns/restart_process.h

71 lines
1.4 KiB
C
Raw Normal View History

#ifndef INCLUDE_RESTART_PROCESS_H
#define INCLUDE_RESTART_PROCESS_H
#ifndef INCLUDE_KOLIBRI_H
#include "../lib/kolibri.h"
#endif
enum {
MULTIPLE,
SINGLE
};
#define MAX_PROCESS_COUNT 256
:bool CheckProcessExists(dword proc_name) {
int i;
proc_info Process;
for (i=0; i<MAX_PROCESS_COUNT; i++;)
{
GetProcessInfo(#Process, i);
if (strcmpi(#Process.name, proc_name)==0) return 1;
}
return 0;
}
:void KillProcessByName(dword proc_name, byte multiple) {
int i;
proc_info Process;
for (i=0; i<MAX_PROCESS_COUNT; i++;)
{
GetProcessInfo(#Process, i);
if (strcmpi(#Process.name, proc_name)==0)
{
KillProcess(Process.ID);
if (multiple==SINGLE) break;
}
}
}
:int GetProcessesCount(dword proc_name) {
int i, count=0;
proc_info Process;
for (i=0; i<MAX_PROCESS_COUNT; i++;)
{
GetProcessInfo(#Process, i);
if (strcmpi(#Process.name, proc_name)==0) count++;
}
return count;
}
:void RestartProcessByName(dword proc_name, byte multiple) {
KillProcessByName(proc_name + strrchr(proc_name, '/'), multiple);
RunProgram(proc_name, "");
}
:void RestartAllProcess() {
int i;
proc_info Process, Self;
GetProcessInfo(#Self, -1);
for (i=0; i<MAX_PROCESS_COUNT; i++;)
{
GetProcessInfo(#Process, i);
if (Process.name)
&& (!streq(#Process.name, "OS"))
&& (Process.ID != Self.ID)
KillProcess(Process.ID);
}
RunProgram("/sys/launcher", NULL);
}
#endif