gpt4 book ai didi

perl - 确保只有一个 Perl 程序实例正在运行的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 10:50:54 28 4
gpt4 key购买 nike

有几种方法可以做到这一点,但我不确定其中哪一种是最好的。

这是我能想到的:

  • 使用 pgrep 查找进程。
  • 让脚本使用 flock 锁定自身,然后在每次运行时检查它是否被锁定。
  • 在/var/run/program_name.pid 中创建一个 pid 文件并检查是否存在,并在需要时比较 pid。

  • 可能有更多方法可以做到这一点。你认为最好的方法是什么?

    最佳答案

    有很多方法可以做到。 PID 文件是执行此操作的传统方法。您还可以锁定文件,例如程序本身。这段代码可以解决问题:

    use Fcntl ':flock';
    open my $self, '<', $0 or die "Couldn't open self: $!";
    flock $self, LOCK_EX | LOCK_NB or die "This script is already running";

    与 PID 文件相比,其优点之一是当程序退出时文件会自动解锁。以可靠的方式实现要容易得多。

    关于perl - 确保只有一个 Perl 程序实例正在运行的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/455911/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com