+ -
当前位置:首页 → 问答吧 → 如何在脚本启动的时候检测脚本是否已经在运行?

如何在脚本启动的时候检测脚本是否已经在运行?

时间:2010-10-18

来源:互联网

网上找了很多都不太好。
c/c++可以调用kill来判断,Perl不知道有没有什么惯用的办法?

作者: py   发布时间: 2010-10-18

查看进程?或者也用kill?

作者: yybmsrs   发布时间: 2010-10-18

是不是想实现一个程序只能运行一个实例?

作者: toniz   发布时间: 2010-10-18

这个跟语言关系不大吧,C里有Kill(0,pid) , perl 也有类似的kill 0=>$pid

作者: 027xiatian   发布时间: 2010-10-18



QUOTE:
网上找了很多都不太好。
c/c++可以调用kill来判断,Perl不知道有没有什么惯用的办法?
py 发表于 2010-10-18 08:47




    一般都是用pid文件加kill 0的方式。

但是,很有可能这种情况,比如你系统断电重启,pid文件没有删除掉,比如里面记录pid是1234.
然后系统重启,你的脚本先找到pid文件,获取它的值,并发送一个kill 0 => 1234.
很有可能,这个kill 0返回true,但是1234不是你的脚本的进程ID,而是系统中其他一个进程的ID(因为系统重启过)。
这时你的脚本,就会错误的拒绝启动。。。这个问题很讨厌。

作者: 兰花仙子   发布时间: 2010-10-18