免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2400 | 回复: 9
打印 上一主题 下一主题

如何限制进程多次启动? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-04 11:20 |只看该作者 |正序浏览
请问如何限制一个进程的多次启动?例如我已执行该路径下的/data/root/test.sh,如果再次执行时,则无法执行,如何做到?

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



你这点的足够快很麻烦

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



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

论坛徽章:
0
9 [报告]
发表于 2008-12-04 17:21 |只看该作者
unix c里面有个强制性锁,基本思想是这样:
如果该程序没有启动,则给文件(没有就创建)加上强制性锁(其他进程再想上锁都将失败),再启动脚本;
当另外一个脚本再启动的时候一定要先锁住这个文件,再执行启动过程.
你可以自己把要启动的脚本用c包装一下。

具体见apue2:chapter 13.5

[ 本帖最后由 sunceenjoy 于 2008-12-4 17:24 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-12-04 15:53 |只看该作者
不过还有个问题,这样不是绝对的可靠,我是在桌面建一个快捷图标,点击则运行某个路径下的脚本,如果用户点的足够快,在第一次点击中文件还未创建时,若另一进程已点击,则程序脚本仍能运行。。。。该如何解决?能不能把脚本的某些部分写成原子操作?

论坛徽章:
0
7 [报告]
发表于 2008-12-04 15:51 |只看该作者
谢谢各位大侠,问题已解决。。。启发的不错。。。以后多多请教你们。。。

论坛徽章:
1
2015年亚洲杯之韩国
日期:2015-04-24 09:07:02
6 [报告]
发表于 2008-12-04 11:49 |只看该作者

回复 #4 nuclearxin 的帖子

嘿嘿 不是没认可 是小弟刚愚钝没能理解

论坛徽章:
3
辰龙
日期:2013-11-20 23:03:57子鼠
日期:2014-05-26 14:46:482015年亚洲杯之伊拉克
日期:2015-01-30 14:29:38
5 [报告]
发表于 2008-12-04 11:34 |只看该作者
可以产生一个临时文件,启动时检查存不存在这个文件,存在的话就退出,

论坛徽章:
0
4 [报告]
发表于 2008-12-04 11:33 |只看该作者
..........我的启发性回答没得到认可

论坛徽章:
1
2015年亚洲杯之韩国
日期:2015-04-24 09:07:02
3 [报告]
发表于 2008-12-04 11:30 |只看该作者

回复 #2 nuclearxin 的帖子

楼上的兄弟的意思没懂

论坛徽章:
0
2 [报告]
发表于 2008-12-04 11:23 |只看该作者
linux的/var/lock下都是一些大小为零的 “文件”
一般程序会在执行的时候写入lock文件夹告只正在运行 。在结束或退出是删除
就这么干吧

[ 本帖最后由 nuclearxin 于 2008-12-4 11:33 编辑 ]
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP