linux下qt检查进程是否存在,Linux下C语言实现查看进程是否存在
基本思路是先定義一個FILE指針,用該指針接收popen()執行ps指令的返回值,再從指針中讀取數據到緩存,根據得到的數據判斷進程是否存在,怎么操作要看ps的參數了。
示例一
下面這個示例從網上找的,根據個數來判斷進程是否存在
#include
#include
#include
#include
#include
#include
#include
#define BUFSZ PIPE_BUF
void err_quit(char *msg)
{
perror(msg);
exit(EXIT_FAILURE);
}
int main(int argc, char *argv[])
{
FILE* fp;
int count;
char buf[BUFSZ];
char command[150];
if(argc != 2)
{
printf("USAGE: example \n");
exit(EXIT_SUCCESS);
}
else
sprintf(command, "ps -C %s|wc -l", argv[1] );
if((fp = popen(command,"r")) == NULL)
err_quit("popen");
if( (fgets(buf,BUFSZ,fp))!= NULL )
{
count = atoi(buf);
if((count - 1) == 0)
printf("%s not found\n",argv[1]);
else
printf("process : %s total is %d\n",argv[1],(count - 1));
}
pclose(fp);
exit(EXIT_SUCCESS);
}
示例二
int detect_process(char * process_name)
{
FILE *ptr;
char buff[512];
char ps[128];
sprintf(ps,"ps -e | grep -c ' %s
",process_name);strcpy(buff,"ABNORMAL");
if((ptr=popen(ps, "r")) != NULL)
{
while (fgets(buff, 512, ptr) != NULL)
{
if(atoi(buff)>=2)
{
pclose(ptr);
return CONFLICT;
}
}
}
if(strcmp(buff,"ABNORMAL")==0) /*ps command error*/
return ERROR;
pclose(ptr);
return NOERROR;
}
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的linux下qt检查进程是否存在,Linux下C语言实现查看进程是否存在的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 的遍历语法,oracle
- 下一篇: linux修改文件描述符,linux最大