当前位置: 技术问答>linux和unix
如何判断指定的进程是否存在
来源: 互联网 发布时间:2015-11-27
本文导语: 我用这样的方式: if( kill(指定的进程号,SIGCHLD) == (-1) )存在; else 不存在; 可以检测到部分,也就是以同样的用户名在不同的终端登陆所产生的进程,是可以检测到的,但以另外一个不同的用户名的进程就检测不到 ...
我用这样的方式:
if( kill(指定的进程号,SIGCHLD) == (-1) )存在;
else 不存在;
可以检测到部分,也就是以同样的用户名在不同的终端登陆所产生的进程,是可以检测到的,但以另外一个不同的用户名的进程就检测不到
比如:
test用户在终端tty1上产生进程 ID=1001
test用户在终端tty2上产生进程 ID=1002
my 用户在终端tty6上产生进程 ID=1006
假设这些进程都还存在的话,有结果:
tty1上 kill(1001,SIGCHLD) != (-1) //正确
tty1上 kill(1002,SIGCHLD) != (-1) //正确
tty1上 kill(1006,SIGCHLD) = (-1) //错误
tty2上 kill(1001,SIGCHLD) != (-1) //正确
tty2上 kill(1002,SIGCHLD) != (-1) //正确
tty2上 kill(1006,SIGCHLD) = (-1) //错误
tty6上 kill(1001,SIGCHLD) = (-1) //错误
tty6上 kill(1002,SIGCHLD) = (-1) //错误
tty6上 kill(1006,SIGCHLD) != (-1) //正确
请问该如何有效的检测指定的进程号是否存在呢?
if( kill(指定的进程号,SIGCHLD) == (-1) )存在;
else 不存在;
可以检测到部分,也就是以同样的用户名在不同的终端登陆所产生的进程,是可以检测到的,但以另外一个不同的用户名的进程就检测不到
比如:
test用户在终端tty1上产生进程 ID=1001
test用户在终端tty2上产生进程 ID=1002
my 用户在终端tty6上产生进程 ID=1006
假设这些进程都还存在的话,有结果:
tty1上 kill(1001,SIGCHLD) != (-1) //正确
tty1上 kill(1002,SIGCHLD) != (-1) //正确
tty1上 kill(1006,SIGCHLD) = (-1) //错误
tty2上 kill(1001,SIGCHLD) != (-1) //正确
tty2上 kill(1002,SIGCHLD) != (-1) //正确
tty2上 kill(1006,SIGCHLD) = (-1) //错误
tty6上 kill(1001,SIGCHLD) = (-1) //错误
tty6上 kill(1002,SIGCHLD) = (-1) //错误
tty6上 kill(1006,SIGCHLD) != (-1) //正确
请问该如何有效的检测指定的进程号是否存在呢?
|
http://community.csdn.net/Expert/topic/4771/4771615.xml?temp=.8942377
|
改为kill(指定的进程号,0)试一下。
|
对确实有权限的问题,如果你不是root用户当你发信号到不属于你自己的进程时会报错。
|
当前active的进程都在PROC目录下,去读PROC目录就知道了