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

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


30秒到达战场
浏览 1944回答 3
3回答

至尊宝的传说

C语言没有库函数可以做到这一点。但是在Linux下,有一些替代方案。见下:基本思路是先定义一个FILE指针,用该指针接收popen()执行ps指令的返回值,再从指针中读取数据到缓存,根据得到的数据判断进程是否存在,怎么操作要看ps的参数了。1234567891011121314151617181920212223242526272829303132333435363738394041424344#include<unistd.h>&nbsp;#include<sys/types.h>&nbsp;#include<sys/wait.h>&nbsp;#include<stdio.h>&nbsp;#include<stdlib.h>&nbsp;#include<fcntl.h>&nbsp;#include<limits.h>&nbsp;&nbsp;#define&nbsp;BUFSZ&nbsp;PIPE_BUF&nbsp;&nbsp;void&nbsp;err_quit(char&nbsp;*msg)&nbsp;{&nbsp;perror(msg);&nbsp;exit(EXIT_FAILURE);&nbsp;}&nbsp;&nbsp;int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[])&nbsp;{&nbsp;FILE*&nbsp;fp;&nbsp;int&nbsp;count;&nbsp;char&nbsp;buf[BUFSZ];&nbsp;char&nbsp;command[150];&nbsp;if(argc&nbsp;!=&nbsp;2)&nbsp;{printf("USAGE:&nbsp;example&nbsp;<process&nbsp;name>\n");&nbsp;exit(EXIT_SUCCESS);&nbsp;}&nbsp;elsesprintf(command,&nbsp;"ps&nbsp;-C&nbsp;%s|wc&nbsp;-l",&nbsp;argv[1]&nbsp;);&nbsp;&nbsp;if((fp&nbsp;=&nbsp;popen(command,"r"))&nbsp;==&nbsp;NULL)&nbsp;err_quit("popen");&nbsp;&nbsp;if(&nbsp;(fgets(buf,BUFSZ,fp))!=&nbsp;NULL&nbsp;)&nbsp;{count&nbsp;=&nbsp;atoi(buf);&nbsp;if((count&nbsp;-&nbsp;1)&nbsp;==&nbsp;0)&nbsp;printf("%s&nbsp;not&nbsp;found\n",argv[1]);&nbsp;elseprintf("process&nbsp;:&nbsp;%s&nbsp;total&nbsp;is&nbsp;%d\n",argv[1],(count&nbsp;-&nbsp;1));&nbsp;}&nbsp;pclose(fp);&nbsp;exit(EXIT_SUCCESS);&nbsp;}

慕勒3428872

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

繁花如伊

可以遍历进程查找进程的PID跟进程名进行判断,这个需要操作系统提供支持,如果不用第三方库的话windows下是#include<TlHelp32.h>CreateToolhelp32Snapshot/*创建进程快照*/Process32First/*获得第一个进程*/Process32Next/*获得下一个进程*/或者使用#include<psapi.h>EnumProcesses/*返回所有进程数组,可用于OpenProcess*/来枚举进程,具体的可以查看MSDN获取帮助
打开App,查看更多内容
随时随地看视频慕课网APP