2013-03-21 3 views
0

아래 코드를 사용하여 replace.exe의 단일 인스턴스가 실행 중인지 확인했습니다. replace.exe를 만들고 창에서 실행할 때 이름이 바뀌거나 확장명이없는 파일이 하나 더 생성되어 0KB 크기가 생성됩니다.아래 코드를 사용하여 replace.exe의 단일 인스턴스가 실행 중인지 확인했습니다.

나는 그 파일을 만들고 싶지 않다. 나는 replace.exe의 실행이 끝난 후 파일을 자동으로 삭제하고 싶다.

도와주세요 와요 고마워요

use Fcntl qw(:flock); 
# Check if any instance of this script is already running 
my $lock = "replace"; 
sub LockOut () { 
    &print_log ("A instance of this script is running. Therefore exiting. Please try after some time."); 
    print "A instance of this script is running. Therefore exiting. Please try after some time."; 
    exit 1; 
} 

open (my $pid, '>', $lock); 
flock ($pid, LOCK_EX | LOCK_NB) or LockOut(); 
+0

Fcntl qw (: flock); #이 스크립트의 인스턴스가 이미 실행 중인지 확인하십시오. my $ lock = "replace"; sub LockOut() { \t & print_log ("이 스크립트의 인스턴스가 실행 중이므로 종료합니다. 잠시 후 시도하십시오."); \t print "이 스크립트의 인스턴스가 실행 중입니다. 따라서 종료 중입니다. 잠시 후 시도하십시오."; \t exit 1; } open (my $ pid, '>', $ lock); flock ($ pid, LOCK_EX | LOCK_NB) 또는 LockOut(); –

+0

[Lock :: File] (http://search.cpan.org/perldoc/Lock::File)을 참조하십시오. –

답변

0

난 당신이 어떻게 든 윈도우 실행 파일로 컴파일 펄 스크립트로 작업하는 가정 당신은 단일 인스턴스에서 실행되어야합니다. 펄 스크립트에서

use Fcntl qw(LOCK_EX LOCK_NB LOCK_UN); 
if (!flock DATA,LOCK_EX|LOCK_NB) 
{ 
    print STDERR "Already running! Exiting...\n"; 
    exit; 
} 

#### DO NOT REMOVE #### 
__DATA__ 
This DATA-Block will be locked by the single-instance logic, 
preventing it to be locked more than once. 

이 __DATA__ 블록 독점적으로 고정 될 수 있지만, 스크립트 컴파일러가 그 기능을 유지 모르겠어요 :

는 다음을 시도 할 수 있습니다.

어떻게 든 작동하지 않으면 실행 파일의 파일 이름을 알아 내고 대신 해당 파일을 잠그면 '바꾸기'라는 파일을 잠그는 것과 동일한 작업을 수행해야합니다.