C语言判断进程是否存在

Python014

C语言判断进程是否存在,第1张

exe文件,假定题主是在windows下编程:

如果使用/subsystem:windows,入口点选用WinMain的话,参数PrevInstance会指向前一个实例对象(即上一个进程如果是第一个则为NULL)

如果使用的是/subsystem:console,则可以枚举进程查找程序名,具体的可以查阅MSDN相关文档。

C语言没有库函数可以做到这一点。但是在Linux下,有一些替代方案。

见下:

基本思路是先定义一个FILE指针,用该指针接收popen()执行ps指令的返回值,再从指针中读取数据到缓存,根据得到的数据判断进程是否存在,怎么操作要看ps的参数了。

#include<unistd.h> 

#include<sys/types.h> 

#include<sys/wait.h> 

#include<stdio.h> 

#include<stdlib.h> 

#include<fcntl.h> 

#include<limits.h> 

#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 <process name>\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) 

}