日期:2014-05-16  浏览次数:20576 次

关于限制程序只能运行一次
Windows下可以用CreateMutex来实现,Linux下有pthread_mutex_init,但是只能用在同一进程中,无法实现限制程序只能运行一次的功能。不想使用文件锁的方式,最好基于内存。
------最佳解决方案--------------------
yum和apt-get都是,是用文件锁实现的。
------其他解决方案--------------------
文件锁好些,因为进程结束后,操作系统会自动解锁
------其他解决方案--------------------
不明白,程序只运行一次?是某个函数同一时间只有一个进程能调用运行?
------其他解决方案--------------------
CreateMutex创建了内核对象。Linux下不知道能不能创建内核对象。如果不能,恐怕没有很好的基于内存的方法了。
------其他解决方案--------------------
写pid文件,启动kill 0 pid看存活就退出。
------其他解决方案--------------------
用文件纪录锁fcntl(fd,F_SETLK , ptr)或者flock
每次程序启动都尝试锁住一个文件(比如你的某个固定位置的文件,没有就创建,然后锁住)
如果锁不住,则退出。
------其他解决方案--------------------
引用:
写pid文件,启动kill 0 pid看存活就退出。


这方法比较高端。。。。
------其他解决方案--------------------
引用:
引用:

写pid文件,启动kill 0 pid看存活就退出。


这方法比较高端。。。。


unix环境高级编程上的标准方法吧……
------其他解决方案--------------------
是否可以用共享内存的方式?