利用文件锁机制实现服务器程序的自启动计划
利用文件锁机制实现服务器程序的自启动
通过本文你可以体会一下举一反三的含义,以及unix程序设计的简洁性理念。
不知你有没有读过《Unix高级编程》一书,每一章节都是基本知识,感觉不到任何高级之意。正如《C++Primer》一样,书名和内容好像很不相称。
其实正如中国的一句俗语:运用之妙存乎一心。
读的程序多了,编的代码也不少了,剩下的也就是慢慢品味其中的乐趣了。
下面就举一个文件锁(file lock)的用法,向来不喜欢大段的函数参数格式说明,如果你想详细了解文件锁,请查阅相关文档。
服务器程序当然不会无缘无故就死掉,除了受到人为攻击的原因,多是程序bug所致,经过长时间(如果允许)测试修正,纠正了大量的bug,服务器程序已经很稳定了。服务器程序还会崩溃吗?没有人敢说不会,实际就是这样。那好,程序发布的最后阶段就因该是实现服务程序的崩溃自启动。
企业融资的综合成本一般为20%-30%之间 原理很简单:服务器程序开始运行时先锁定一个文件,程序正常情况不释放该锁,当程序因故崩溃时Unix系统将自动释放该锁。由此我们可以设计另一个单独的监听程序,它在主程序锁定锁文件后去锁定同样的文件,那么根据文件锁的性质,此锁定要求将被系统阻塞,当主程序崩溃释放文件锁时,监听程序将获得文件锁,继续执行,在此加入重新启动主程序的命令即可。
主程序的开始处
...
int fd;
fd=open(lockfilename,O_WRONLY|O_CREAT,0600);
flock(fd,LOCK_EX);//互斥锁
...
监听程序的部分内容
...
int fd=-1;
fd=open(lockfilename,O_WRONLY|O_RDONLY);
flock(fd,LOCK_EX);//互斥锁
sleep(2);
flock(fd,LOCK_UN);
system(...);//运行主程序
...
广州好医院男科新标门窗质量
柳州白癜风好医院
- 下一页:利用数据库日志恢复数据到时间点的操作物业
- 上一页:利用标准语句实现查询记录分页覆盖
- 06月21日仙侠土狗见到小伙手上的肉持续图示把肉丢在土里位置
- 06月21日仙侠圣伯纳犬的九个方法位置
- 06月21日仙侠圣伯纳犬爱咬东西如何是好位置
- 06月21日仙侠红尾蝶吃什么要注意科学的喂食位置
- 06月21日仙侠圣伯纳犬怕生胆子小狗狗社会化的训练方法位置
- 06月21日仙侠红嘴相思鸟的饲养管理家养可自制竹笼位置
- 06月20日仙侠猫咪与狗狗度忠诚大PK位置
- 06月20日仙侠猫为什么要储存食物猫储存食物的处理方法位置
- 06月20日仙侠猫为什么喜欢睡在高处猫离家出走有什么原因位置
- 06月20日仙侠猎狐梗多少钱它是传统的英国梗类位置
- 06月20日仙侠猕猴的品种简介位置
- 06月19日仙侠利用春天幫狗狗健康打底的蔬食要素位置