프로 세 스 모니터링 을 c 로 실행 합 니 다. 프로 세 스 가 종료 되면 다시 시작 합 니 다.

5581 단어 linux-c
#include 
#include 
#include 
#include 
#include 
#include 
#include   
#include 
#include 
#include 



//      
#define P1 "hello1"
#define P2 "hello2"
#define P3 "hello3"
#define PATH "."

/*****************************/
int is_run(char *name);
void killall_hello(void);
/*****************************/


//    1,      0
int is_run(char *name)
{
    int ret = -1;
    char buf[256] = {'\0'};
    snprintf(buf, sizeof(buf), "pidof %s >> /dev/null", name); 
    ret = system(buf);

    if(!WEXITSTATUS(ret)){ //#include 
        printf("%s is running!
"
, name); return 1; } else{ printf("%s is not running!
"
, name); return 0; } } void killall_hello(void) { char buf[128] = {'\0'}; snprintf(buf, sizeof(buf), "killall %s", P1); system(buf); snprintf(buf, sizeof(buf), "killall %s", P2); system(buf); snprintf(buf, sizeof(buf), "killall %s", P3); system(buf); } int main(int argc, char **argv) { int p1_ret = -1; int p2_ret = -1; int p3_ret = -1; char buf[128]; bzero(buf, sizeof(buf)); while(1){ p1_ret = is_run(P1); p2_ret = is_run(P2); p3_ret = is_run(P3); if (!(p1_ret && p2_ret && p3_ret)) { killall_hello(); printf("rerun hello3
"
); snprintf(buf, sizeof(buf), "%s/%s &", PATH, P3); system(buf); // system("date >> w.log"); if(!p1_ret){ snprintf(buf, sizeof(buf), "echo %s not run , killall , run %s >> w.log", P1, P3); system(buf); }else if(!p2_ret){ snprintf(buf, sizeof(buf), "echo %s not run , killall , run %s >> w.log", P2, P3); system(buf); }else if(!p3_ret){ snprintf(buf, sizeof(buf), "echo %s not run , killall , run %s >> w.log", P3, P3); system(buf); } } sleep(5); } exit(0); }

좋은 웹페이지 즐겨찾기