永发信息网

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

答案:6  悬赏:70  手机版
解决时间 2021-12-01 07:14
  • 提问者网友:几叶到寒
  • 2021-12-01 00:40
C语言有什么函数可以判断某进程是否存在
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-12-01 02:02
用popen函数
然后用fgets函数读数据
检查输出结果
popen("ps -ef|grep proc_name|grep -v grep" ,"r" );
全部回答
  • 1楼网友:妄饮晩冬酒
  • 2021-12-01 05:20
grep proc_name|grep -v grep
  • 2楼网友:野慌
  • 2021-12-01 04:38
没说明系统是LINUX还是WINDOWS或者MAC,这个必须用到系统提供的API函数,每个系统提供的是不一样的,建议查API手册
  • 3楼网友:鱼忧
  • 2021-12-01 04:10
CWnd::FindWindow(NULL, _T("这台电脑"));该函数返回窗口句柄,若返回值为null则进程不存在
  • 4楼网友:煞尾
  • 2021-12-01 03:18
OpenProcess();

函数原型:
HANDLE OpenProcess(
DWORD dwDesiredAccess, //渴望得到的访问权限(标志)
BOOL bInheritHandle, // 是否继承句柄
DWORD dwProcessId// 进程标示符
);
第三参数为进程ID,输入参数,
如进程存在,返回值为指定进程的句柄。
如进程不存在,返回值为空
  • 5楼网友:刀戟声无边
  • 2021-12-01 02:58

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

见下:

基本思路是先定义一个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  "); 
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 ",argv[1]); 
else
printf("process : %s total is %d ",argv[1],(count - 1)); 

pclose(fp); 
exit(EXIT_SUCCESS); 
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯