为了账号安全,请及时绑定邮箱和手机立即绑定

C语言有什么函数可以判断某进程是否存在?

C语言有什么函数可以判断某进程是否存在?

SSM
30秒到达战场 2019-02-22 19:15:45
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); elsesprintf(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]); elseprintf("process : %s total is %d\n",argv[1],(count - 1)); pclose(fp); exit(EXIT_SUCCESS); }



查看完整回答
反对 回复 2019-03-26
?
慕勒3428872

TA贡献1848条经验 获得超5个赞

用popen函数
然后用fgets函数读数据
检查输出结果
popen("ps -ef|grep proc_name|grep -v grep" ,"r" );

查看完整回答
反对 回复 2019-03-26
?
繁花如伊

TA贡献2012条经验 获得超12个赞

可以遍历进程查找进程的PID跟进程名进行判断,这个需要操作系统提供支持,如果不用第三方库的话windows下是
#include<TlHelp32.h>

CreateToolhelp32Snapshot/*创建进程快照*/

Process32First/*获得第一个进程*/

Process32Next/*获得下一个进程*/
或者使用
#include<psapi.h>

EnumProcesses/*返回所有进程数组,可用于OpenProcess*/
来枚举进程,具体的可以查看MSDN获取帮助



查看完整回答
反对 回复 2019-03-26
  • 3 回答
  • 0 关注
  • 1926 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信