如何判断一个进程存在????
我有一个进程号。如何判断这个进程是否存在??????用C语言函数。 问题点数:0、回复次数:4Top
1 楼luoda(罗达)回复于 2003-06-03 09:52:01 得分 0
kill(pid,sig)
如果这个pid不存在,会返回-1,errno为ESRCH
注意 sig的选择
Top
2 楼luoda(罗达)回复于 2003-06-03 09:55:13 得分 0
还要注意你的权限,root可以向除了pid=1 以外的任何进程发信号Top
3 楼cool_killer(杀手王)回复于 2003-06-03 13:32:39 得分 0
看其父进程,如果大于0,则存在
int EXIST_proc(pid_t proc_id)
{
if(getpgid(proc_id)>0)
return 1;
else{
if(errno == ESRCH)
return 0;
else
return 1;
}
}Top
4 楼cool_killer(杀手王)回复于 2003-06-03 13:40:54 得分 0
kill是发信,大多数进程接收到某一信号的默认操作是中止程序,所以不要随便
给一个进程发送信号,
判断进程存在的方法还可以查看/proc/下的进程号目录是否存在,因为如果某个
进程存在那么在/proc下必有一个用该进程号命名的目录,可以用fopen打开该目
录看看,如果打得开,则存在,打不开,看返回错误信息判断是否存在。Top




