C语言有什么函数可以判断某进程是否存在
3 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
C语言没有库函数可以做到这一点。但是在Linux下,有一些替代方案。
见下:
基本思路是先定义一个FILE指针,用该指针接收popen()执行ps指令的返回值,再从指针中读取数据到缓存,根据得到的数据判断进程是否存在,怎么操作要看ps的参数了。
1234567891011121314151617181920212223242526272829303132333435363738394041424344 | #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); } |
繁花如伊
TA贡献2012条经验 获得超12个赞
可以遍历进程查找进程的PID跟进程名进行判断,这个需要操作系统提供支持,如果不用第三方库的话windows下是
#include<TlHelp32.h>
CreateToolhelp32Snapshot/*创建进程快照*/
Process32First/*获得第一个进程*/
Process32Next/*获得下一个进程*/
或者使用
#include<psapi.h>
EnumProcesses/*返回所有进程数组,可用于OpenProcess*/
来枚举进程,具体的可以查看MSDN获取帮助
- 3 回答
- 0 关注
- 2039 浏览
添加回答
举报
0/150
提交
取消