特别声明:
建议使用google游览器,火狐也可以
论坛处于测试阶段,一切资料都为测试资料,在论坛正式运行的时候,会尽量保存网友的劳动成果!
HelloWorld论坛秉持互惠互利,共同学习与进步,一个人的梦想大家实现的理想,一直坚持着,望广大网友多多支持,提供宝贵意见
来论坛做什么?
可以先转载你平时学习查找的资料(先论坛查找),自己可以写写体会
把平时碰到的问题,如何解决可以先记录在论坛,以备后来的人学习
可以和会员一起参加一些开源项目的学习,汉化,推广,甚至可以加入团队
|
|
来源: http://www.blogjava.net/jnzgrass/archive/2007/12/09/99473.html #include < sys / wait.h > #include < sys / types.h > #include < unistd.h > #include < errno.h > #include < stdarg.h > #include < stdio.h > #include < string.h > int startprocess( char * path[], char * name[], int pid[ 3 ]); int watchprocess( int ppid); int rebootpocess( char * path[], char * name[], int ppid, int num); int main( int argc, char * argv[], char * envp[]) { char * path[ 3 ]; path[ 0 ] = " /home/tony/testmysql/source/mysqlDB/test " ; path[ 1 ] = " /home/tony/testmysql/source/mysqlDB/test1 " ; path[ 2 ] = " /home/tony/testmysql/source/mysqlDB/test2 " ; char * name[ 3 ]; name[ 0 ] = " test " ; name[ 1 ] = " test1 " ; name[ 2 ] = " test2 " ; int pid[ 3 ]; int ppid; startprocess(path,name,pid); // printf("%d\n",pid[0]); for (;;) { int j; for (j = 0 ;j < 3 ;j ++ ) { if (watchprocess(pid[j]) < 0 ) rebootpocess(path,name,pid[j],j); } sleep( 30 ); } // if(watchprocess(3025)<0) // rebootpocess(path,name,5317,2); return 0 ; } int startprocess( char * path[], char * name[], int pid[ 3 ]) { int i = 0 ; for (i = 0 ;i < 3 ;i ++ ) { int fd; fd = fork(); if (fd < 0 ) { return - 1 ; } if (fd == 0 ) { execl(path[i],name[i],( char * ) 0 ); exit( 0 ); } else { pid[i] = fd; continue ; } } return 0 ; } int watchprocess( int ppid) { printf( " ======watchprocess========\n " ); printf( " %d\n " ,ppid); char * filename = ( char * )malloc( 100 ); sprintf(filename, " /proc/%d/status " ,ppid); FILE * pFile; char * line = NULL; size_t len = 0 ; ssize_t read; pFile = fopen (filename, " r " ); if (pFile == NULL) { printf( " %s\n " , " Config file is not exist!\n " ); return - 1 ; } int linenum = 0 ; char * tmp; // char* tmp1 = (char*)malloc(20); while ((read = getline( & line, & len, pFile)) != - 1 && linenum < 3 ) { linenum ++ ; strtok(line, " \t " ); tmp = strtok(NULL, " " ); if ( linenum == 2 && ((strcmp(tmp, " S " ) == 0 ) || (strcmp(tmp, " R " ) == 0 )) ) { // printf("sdfsdlfw2rwW$#@^$%&YERGHFDGDFGERYG\n"); fclose(pFile); pFile = NULL; return 0 ; } } free(filename); fclose(pFile); pFile = NULL; return - 1 ; } int rebootpocess( char * path[], char * name[], int ppid, int num) { printf( " ======rebootpocess========\n " ); printf( " %d\n " ,num); if (kill(ppid,SIGKILL) == 0 ) { int fd; fd = fork(); if (fd == 0 ) { execl(path[num],name[num],NULL); exit( 0 ); } else { return 0 ; } } else { printf( " Kill the process failed! " ); return - 1 ; } return 0 ; }
|
[挂载人]初学MPEG [审核人]初学MPEG 推荐 |
|
|
Please Login (or Sign Up) to leave a comment |