当前位置: 技术问答>linux和unix
c语言如何实现只运行单个进程实例?
来源: 互联网 发布时间:2016-03-26
本文导语: 条件是不能通过进程名字和id判断,因为程序每次可以编译成不同名字。。。 | 设置一个进程间的互斥锁,每次启动进程的时候check这个锁。 或者简单的在/tmp下建立一个文件作为互斥锁。 | ...
条件是不能通过进程名字和id判断,因为程序每次可以编译成不同名字。。。
|
设置一个进程间的互斥锁,每次启动进程的时候check这个锁。
或者简单的在/tmp下建立一个文件作为互斥锁。
或者简单的在/tmp下建立一个文件作为互斥锁。
|
方法很多。
简单的方法是在确定的目录下创建一个文件,然后用文件锁。如果能加锁,说明是First进程,否则说明已有进程,退出即可。
用文件锁的好处是,当进程异常退出时,内核会自动释放其持有的文件锁,这样不会引起无法再次启动的问题。
简单的方法是在确定的目录下创建一个文件,然后用文件锁。如果能加锁,说明是First进程,否则说明已有进程,退出即可。
用文件锁的好处是,当进程异常退出时,内核会自动释放其持有的文件锁,这样不会引起无法再次启动的问题。
|
不使用文件锁是个好习惯。
|
方法很多、大概分成两类。
第一类是使用系统资源,文件、有名管道、共享内存、信号灯等等。
第二类是建立自己的监测体系,例如使用demon监视进程状态等等。这种方式也离不开进程间通信的。
第一类是使用系统资源,文件、有名管道、共享内存、信号灯等等。
第二类是建立自己的监测体系,例如使用demon监视进程状态等等。这种方式也离不开进程间通信的。
|
mark
|
进程间需要用IPC机制。
|
1,使用系统级别的锁;
2,可以从proc中判断出是否已有运行的实例;
这两种方法都可以。
2,可以从proc中判断出是否已有运行的实例;
这两种方法都可以。
|
那就必须先理清楚你要在什么系统下跑了。
文件锁使用fcntl函数。你查一下看看。
文件锁使用fcntl函数。你查一下看看。