- 论坛徽章:
- 0
|
我一般是这样做的:
先写两个函数- #lock_prog()
- sub lock_prog
- {
- if( open( LockFH, "> lock_file.lck" ) )
- {
- if( flock( LockFH, 2|4 ) ) #LOCK_SH:1, LOCK_EX:2, LOCK_UN:8, LOCK_NB:4
- {
- return 0;
- }
- }
- return 1;
- }
- #unlock_prog()
- sub unlock_prog
- {
- if( defined( fileno( LockFH ) ) )
- {
- if( $mutex_flag )
- {
- close( LockFH );
- }
- else
- {
- flock( LockFH, 8 );
- close( LockFH );
- unlink( glob( "lock_file.lck") );
- }
- }
- }
复制代码 代码开头的时候添加下面代码:- if( ( $mutex_flag = lock_prog() ) == 1 )
- {
- exit( -1 );
- }
复制代码 代码末尾添加下面代码:主要是利用perl的文件锁,程序开始时候,测试该文件是否被锁,如果被锁,则证明已经有一个实例在运行。那么就退出代码。 |
|