2017-07-30 57 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

相關問題