如何判断指定的进程是否存在

hbcb 2006-05-25 02:29:47
我用这样的方式:
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) //正确

请问该如何有效的检测指定的进程号是否存在呢?
...全文
709 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
if_then_else_liao 2006-05-26
  • 打赏
  • 举报
回复
当前active的进程都在PROC目录下,去读PROC目录就知道了
linaxing 2006-05-25
  • 打赏
  • 举报
回复
对确实有权限的问题,如果你不是root用户当你发信号到不属于你自己的进程时会报错。
hbcb 2006-05-25
  • 打赏
  • 举报
回复
kill(ID,0) 和我原来的结果是一样的,是不是也有用户权限的限制呢?

linaxing 2006-05-25
  • 打赏
  • 举报
回复
改为kill(指定的进程号,0)试一下。
NC 2006-05-25
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4771/4771615.xml?temp=.8942377

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧