繁体   English   中英

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

[英]Create process in python, only if it doesn't exist

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

它创建的子进程应该能够比其父进程持续更长时间。 但是,如果它已经在运行,则不应创建这样的子进程(如果先前的父进程创建了它,则可能会发生这种情况)。

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

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

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

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

“它创建了一个子进程,它应该能够比其父进程持续更长时间。” 别。

让一个更长寿的服务过程为您创造孩子。 通过 Unix 域套接字与此服务对话。 然后它可用于将文件描述符传递给子进程。 该服务还可以轻松确保它只有一个孩子。

这种模式可用于消除对比父母寿命长的孩子的需求。

使用命令名称只需创建一个不执行任何操作的同名进程即可轻松执行 DoS。 由于 PID 重用,使用 PID 文件是不明确的。 只有拥有一个等待其子项的主管才能在它们退出时正确地重新启动它们或确保它们正在运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM