Chinaunix

标题: 如何限制进程多次启动? [打印本页]

作者: wolfme    时间: 2008-12-04 11:20
标题: 如何限制进程多次启动?
请问如何限制一个进程的多次启动?例如我已执行该路径下的/data/root/test.sh,如果再次执行时,则无法执行,如何做到?
作者: nuclearxin    时间: 2008-12-04 11:23
linux的/var/lock下都是一些大小为零的 “文件”
一般程序会在执行的时候写入lock文件夹告只正在运行 。在结束或退出是删除
就这么干吧

[ 本帖最后由 nuclearxin 于 2008-12-4 11:33 编辑 ]
作者: biglazybug    时间: 2008-12-04 11:30
标题: 回复 #2 nuclearxin 的帖子
楼上的兄弟的意思没懂
作者: nuclearxin    时间: 2008-12-04 11:33
..........我的启发性回答没得到认可
作者: seven007    时间: 2008-12-04 11:34
可以产生一个临时文件,启动时检查存不存在这个文件,存在的话就退出,
作者: biglazybug    时间: 2008-12-04 11:49
标题: 回复 #4 nuclearxin 的帖子
嘿嘿 不是没认可 是小弟刚愚钝没能理解
作者: wolfme    时间: 2008-12-04 15:51
谢谢各位大侠,问题已解决。。。启发的不错。。。以后多多请教你们。。。
作者: wolfme    时间: 2008-12-04 15:53
不过还有个问题,这样不是绝对的可靠,我是在桌面建一个快捷图标,点击则运行某个路径下的脚本,如果用户点的足够快,在第一次点击中文件还未创建时,若另一进程已点击,则程序脚本仍能运行。。。。该如何解决?能不能把脚本的某些部分写成原子操作?
作者: sunceenjoy    时间: 2008-12-04 17:21
unix c里面有个强制性锁,基本思想是这样:
如果该程序没有启动,则给文件(没有就创建)加上强制性锁(其他进程再想上锁都将失败),再启动脚本;
当另外一个脚本再启动的时候一定要先锁住这个文件,再执行启动过程.
你可以自己把要启动的脚本用c包装一下。

具体见apue2:chapter 13.5

[ 本帖最后由 sunceenjoy 于 2008-12-4 17:24 编辑 ]
作者: welcome008    时间: 2008-12-06 01:22
原帖由 wolfme 于 2008-12-4 15:53 发表
不过还有个问题,这样不是绝对的可靠,我是在桌面建一个快捷图标,点击则运行某个路径下的脚本,如果用户点的足够快,在第一次点击中文件还未创建时,若另一进程已点击,则程序脚本仍能运行。。。。该如何解决? ...



你这点的足够快很麻烦

你快到那个程序还还没载到内存里,你就已经点击了N+次了,那么我觉得你这个问题是无解的



否则,你在程序的开头就创建一个用来判断的标志文件并进行判断,或者ps判断进程是否已经起来,应该都可以解决你的问题吧?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2