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

 我来答
听时间流逝
2016-06-22 · TA获得超过1716个赞
知道小有建树答主
回答量:1070
采纳率:75%
帮助的人:249万
展开全部

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); 
}
Caworb
2016-05-06 · TA获得超过245个赞
知道小有建树答主
回答量:419
采纳率:100%
帮助的人:202万
展开全部
可以遍历进程查找进程的PID跟进程名进行判断,这个需要操作系统提供支持,如果不用第三方库的话windows下是
#include<TlHelp32.h>

CreateToolhelp32Snapshot/*创建进程快照*/

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

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

EnumProcesses/*返回所有进程数组,可用于OpenProcess*/
来枚举进程,具体的可以查看MSDN获取帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青丝青y亦青城
推荐于2018-03-22
知道答主
回答量:7
采纳率:0%
帮助的人:7641
展开全部
用popen函数
然后用fgets函数读数据
检查输出结果
popen("ps -ef|grep proc_name|grep -v grep" ,"r" );
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梁淘气123
2016-05-27
知道答主
回答量:1
采纳率:0%
帮助的人:1122
展开全部
OpenProcess();

函数原型:
HANDLE OpenProcess(
DWORD dwDesiredAccess, //渴望得到的访问权限(标志)
BOOL bInheritHandle, // 是否继承句柄
DWORD dwProcessId// 进程标示符
);
第三参数为进程ID,输入参数,
如进程存在,返回值为指定进程的句柄。
如进程不存在,返回值为空
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ikwhere
2016-06-13
知道答主
回答量:12
采纳率:0%
帮助的人:5.7万
展开全部
没说明系统是LINUX还是WINDOWS或者MAC,这个必须用到系统提供的API函数,每个系统提供的是不一样的,建议查API手册
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式