gpt4 book ai didi

python - 在 python 中创建进程,仅当它不存在时

转载 作者:太空狗 更新时间:2023-10-29 12:09:04 24 4
gpt4 key购买 nike

我有一个最终需要后台进程来执行操作的 python 服务器。

它创建的子进程应该比其父进程更持久。但如果它已经在运行,它不应该创建这样的子进程(如果以前的父进程创建它,它可能会发生)。

我可以想到几个不同的方法来解决这个问题:

  1. 在创建新进程之前检查所有当前正在运行的进程:Cross-platform way to get PIDs by process name in python
  2. 在子进程启动时写一个文件,完成后删除它。在创建子进程之前检查文件。

但它们似乎都不能完全满足我的需求。如果子进程是其父进程的分支,则解决方案 (1) 效果不佳。解决方案 (2) 很难看,看起来很容易失败。

在进程创建时提供一个固定的 pid 或名称对我来说会很棒,这样我就可以始终以固定的方式在系统中查找进程并确定它是否正在运行。但我还没有找到一种方法来做到这一点。

最佳答案

“它创建的子进程应该比其父进程更持久。”不。

有一个更长寿的服务流程为您创造 child 。通过 Unix 域套接字与该服务对话。然后它可用于将文件描述符传递给 child 。该服务还可以简单地确保它只有一个 child 。

这种模式可以用来消除比 parent 长寿的 child 的需要。

使用命令名称可以轻松地通过创建一个什么都不做的同名进程来执行 DoS。由于 PID 重用,使用 PID 文件是不明确的。只有等待它的 child 的监督者才能在他们退出时正确地重启他们或确保他们正在运行。

关于python - 在 python 中创建进程,仅当它不存在时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54763863/

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