У меня есть 5 скриптов perl и вы хотите убедиться, что если кто-то запустит один из скриптов и попробует в то же время запустить другой скрипт, второй скрипт умрет с сообщением о том, что другой скрипт работаетВыполнение только одного скрипта perl может быть запущено одновременно
Я вижу этот механизм на другие сделки StackOverflow с одним экземпляром: What's the best way to make sure only one instance of a Perl program is running?
use Fcntl ':flock';
open my $self, '<', $0 or die "Couldn't open self: $!";
flock $self, LOCK_EX | LOCK_NB or croak "This script is already running";
мой вопрос есть возможность построить какой-то механизм, чтобы убедиться, что только один сценарий запуска на окнах без необходимость блокировки внешнего файла на всех скриптах?
Ваш лучший вариант imho - это открыть внешний файл, который будет использоваться всеми вашими программами. Первый создает файл и до тех пор, пока он есть, остальные либо ждут, либо останавливаются. – simbabque
Я думал об этом варианте. Мне просто интересно, есть ли другой вариант, например, скрыть этот файл, например, используя файлы карт памяти: http: //search.cpan.org/~leont/File-Map-0.61/lib/File/Map. pm или любой другой идеей – smith
Похоже, что он работает только с вилками или потоками. Но вы сказали, что у вас есть пять разных программ, в которых вы хотите убедиться, что только один работает. Я не думаю, что File :: Map может там помочь. Как разные программы (которые могут даже не запускаться одновременно) знают о позиции памяти, которую они должны использовать для проверки? – simbabque