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