当前位置: 技术问答>linux和unix
UNIX下如何简单有效地确保某程序同时只有一个进程实例运行?
来源: 互联网 发布时间:2015-04-05
本文导语: UNIX下如何简单有效地确保某程序同时只有一个进程实例运行? 我原来采用调用外部进程用ps命令的方法,但似乎不太好,是不是有更好的办法,例如什么系统调用、库函数等? | 方法很多 比...
UNIX下如何简单有效地确保某程序同时只有一个进程实例运行?
我原来采用调用外部进程用ps命令的方法,但似乎不太好,是不是有更好的办法,例如什么系统调用、库函数等?
我原来采用调用外部进程用ps命令的方法,但似乎不太好,是不是有更好的办法,例如什么系统调用、库函数等?
|
方法很多
比如用共享内存,采用固定的共享内存ID,程序启动时申请,推出时释放
如果有一个进程实例运行,则其他进程实例申请时就会失败
也可以用文件锁,所住一个固定的文件
比如用共享内存,采用固定的共享内存ID,程序启动时申请,推出时释放
如果有一个进程实例运行,则其他进程实例申请时就会失败
也可以用文件锁,所住一个固定的文件
|
善意的还是恶意的?
一般都是建立一个文件,保存pid,另一个实例启动时检查该文件。如果该文件不存在,则是第一个实例,建立该文件。如果存在,可以认为是已有实例在运行。不放心的话,可以取进程状态确认。
一般都是建立一个文件,保存pid,另一个实例启动时检查该文件。如果该文件不存在,则是第一个实例,建立该文件。如果存在,可以认为是已有实例在运行。不放心的话,可以取进程状态确认。