2017-07-30 74 views
0

我有一个名为speech.py​​w的python脚本。我不希望它在运行时出现在屏幕上,所以我使用了该扩展。使用python检查正在运行的python进程

如何使用另一个python脚本检查脚本是否正在运行?如果它没有运行,这个脚本应该启动它。

+0

如果只是Windows,您应该使用对象名称空间,例如具有PID的共享存储器的命名部分,例如, 'm = mmap.mmap(-1,8,'Global \\ Spam');''pid = int.from_bytes(m,'little')'。如果'pid'非零,它可以退出。否则,该脚本将其pid写入共享存储器,例如, 'm [:] = os.getpid()。to_bytes(8,'little')',并继续执行。后者使用名称为“Global \\ Spam”的名称,这是名为“垃圾邮件”的部分,可在所有Windows会话中全局显示。如果您希望仅用于当前会话,请使用“垃圾邮件”或“本地垃圾邮件”。 – eryksun

回答

1

了我的头顶部,至少有两种方法可以做到这一点:

  • 你可以使脚本创建在特定位置的空文件,另一个脚本可以检查这一点。请注意,如果脚本不干净,您可能必须手动删除该文件。
  • 您可以列出所有正在运行的进程,并检查第一个进程是否在这些进程中。这是更脆弱和平台相关。

另一种混合策略是脚本创建特定文件并将其写入PID(进程ID)。运行程序脚本可以读取该文件,如果指定的PID未运行或不是脚本,则可能会删除该文件。这也与平台有关。

+0

对于Windows,使用'os.open'和'O_TEMPORARY'标志来获取保证在进程退出时被删除的文件,即使进程已终止。如果您希望文件是每个会话,则必须命名包含当前会话ID的文件。最好使用共享内存的命名部分,因为您可以自动获取所有这些内容 - 即清理和每会话名称空间。 – eryksun

相关问题