免费注册 查看新帖 |

Chinaunix

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

如何使程序在执行时不能执行第二遍 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-18 17:45 |只看该作者 |正序浏览
小弟在写一个程序,执行时间比较长,并且要写进cron定期执行
为了避免程序未执行完毕下个定期时间就来到的情况,要检测该程序进程是否已经执行
不知道如何实现,各位dx能不能给个意见?

PS:不知道我表达的是否明白。。。小弟新手,请说的详细点儿

论坛徽章:
0
18 [报告]
发表于 2005-05-23 10:41 |只看该作者

如何使程序在执行时不能执行第二遍

值得!

论坛徽章:
0
17 [报告]
发表于 2005-05-20 08:55 |只看该作者

如何使程序在执行时不能执行第二遍

原帖由 "albcamus"][code 发表:
#include <stdio.h>;
#include <unistd.h>;
#include <sys/types.h>;
#include <sys/stat.h>;
#include <fcntl.h>;
#include <stdlib.h>;

int main&#40;int argc,char* argv&#91;&#93;&#41;
{
       struct flock flk;
       flk.l_type = F_WRLCK;
       flk.l_start = 0;
       flk.l_whence = 0;
       flk.l_len = 0;

       int fd;
       if&#40;&#40;fd = open&#40;&quot;aa.txt&quot;,O_RDWR|O_NONBLOCK|0644&#41;&#41; == -1&#41;{
               perror&#40;&quot;open&#58;&quot;&#41;;
               exit&#40;1&#41;;
       }
       if&#40;fcntl&#40;fd,F_SETLK,&flk&#41; == -1&#41;{
               perror&#40;&quot;fcntl with F_SETLK&#58;&quot;&#41;;
               exit&#40;1&#41;;
       }

       //do something......
       pause&#40;&#41;;
       return 0;
}[/code]


albcamus的这个方法还不错,为什么不试试.

在windows下,一般的做法是创建一个mutex.

如果你的linux程序也有创建mutex的权限的话,也可以用创建mutex的方法.

论坛徽章:
0
16 [报告]
发表于 2005-05-20 08:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
15 [报告]
发表于 2005-05-20 01:32 |只看该作者

如何使程序在执行时不能执行第二遍

原帖由 "lucifer103" 发表:


1、被我们项目经理枪毙了~
2、用不同用户名登入,好象用ps命令得不到上个用户执行的进程~?


没明白, ps 能看机器上所有的进程. 为什么跟上个用户有关?
间单的事为什么弄这么复杂.

论坛徽章:
0
14 [报告]
发表于 2005-05-19 10:54 |只看该作者

如何使程序在执行时不能执行第二遍

也可以,程序运行以后把自己的属性改了。运行完了再改回来。

论坛徽章:
0
13 [报告]
发表于 2005-05-19 09:04 |只看该作者

如何使程序在执行时不能执行第二遍

我觉得用进程间通信的机制比较好!

论坛徽章:
0
12 [报告]
发表于 2005-05-18 18:34 |只看该作者

如何使程序在执行时不能执行第二遍

UNIX环境高级编程上有讲的,第282页,是采用记录锁的方法。

论坛徽章:
0
11 [报告]
发表于 2005-05-18 18:16 |只看该作者

如何使程序在执行时不能执行第二遍

能不能给点儿注解?
flock以及fcntl()不懂
小弟新手,曾看到类似代码,就是看不懂。。。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2005-05-18 18:12 |只看该作者

如何使程序在执行时不能执行第二遍

>;>;好象不是所有系统的 /proc 里边都有执行进程的完整记录(另篇帖子上看到的,具体怎么说忘了,大概这意思)

System V
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP