LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 940|回复: 7

请问如何防止一个程序不要运行多次

[复制链接]
发表于 2005-10-11 13:25:34 | 显示全部楼层 |阅读模式
就是同一时间只能有一个运行


谢谢
发表于 2005-10-11 13:28:28 | 显示全部楼层
用临时文件来解决?写个临时文件,如果存在这个文件说明有改进程在运行。如果没就说明改进程没有运行。当然为了防止给kill掉那文件还在系统里,最好open后就用unlink做掉。
回复 支持 反对

使用道具 举报

发表于 2005-10-11 13:29:46 | 显示全部楼层
创建一个文件,运行时锁住他
启动前如果有进程锁住该文件就退出
详进APUE。有一个详尽的例子
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-11 21:45:56 | 显示全部楼层
多谢

我原先是查看进程看有没有同名进程
回复 支持 反对

使用道具 举报

发表于 2005-10-12 13:07:28 | 显示全部楼层
大部分的linux的daemon都是在/var/run下建一个.pid文件, 如apache.pid, 该文件包含已经运行的daemon的主进程的pid, daemon运行的时候检查此文件, 如果存在, 则退出, 如果没有XXX.pid文件, 则创建一个并将主pid加入, daemon在退出时会将此文件删除.
回复 支持 反对

使用道具 举报

发表于 2005-10-12 13:17:50 | 显示全部楼层
大部分的linux的daemon都是在/var/run下建一个.pid文件, 如apache.pid, 该文件包含已经运行的daemon的主进程的pid, daemon运行的时候检查此文件, 如果存在, 则退出, 如果没有XXX.pid文件, 则创建一个并将主pid加入, daemon在退出时会将此文件删除.
回复 支持 反对

使用道具 举报

发表于 2005-10-20 12:18:43 | 显示全部楼层
在/var/run下创建一个.pid文件,如果你的daemon被kill掉了,那个文件还存在吗?
回复 支持 反对

使用道具 举报

发表于 2005-10-20 18:42:45 | 显示全部楼层
见2楼上面的方法,不过没试过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表