簡體   English   中英

Python:Popen后退出python.exe嗎?

[英]Python: Exiting python.exe after Popen?

小問題:

我有一個按預期方式運行的python腳本,但當我選擇菜單選項以Popen另一個python腳本時除外:

myPath = r"c:\Python27\myScript.py"
cmd = r"c:\Python27\python.exe '{}'".format(myPath)
py_process = Popen(cmd, stdout=PIPE, stdin=PIPE, stderr=STDOUT)

當我運行該代碼段(在Windows中)時,子進程將按預期在后台啟動,但是當我嘗試退出主腳本,但讓子進程在后台運行時:

raise SystemExit

...一個空窗口“ c:\\ python27 \\ python.exe”仍然存在。 我試過其他EXIT方法,結果相似。 注意:當我不運行該代碼段而退出主腳本時,python窗口將根據需要消失。

我的目標是在所有情況下都退出主腳本后不留下任何跟蹤/窗口,但子進程應仍在后台運行。

有什么建議可以實現這個目標?

謝謝!

如果要先與已啟動的進程進行通信,然后再讓它繼續運行,則有幾種選擇:

  • 在您長期運行的過程中處理SIGPIPE,請不要死於它。 啟動器進程退出后,無需stdin即可生存。
  • 使用參數,環境或臨時文件傳遞您想要的任何內容。
  • 如果要進行雙向通信,請考慮使用命名管道(man mkfifo)或套接字,或編寫適當的服務器。
  • 在初始雙向通信階段完成后,使長時間運行的流程分支。

它不會創建“一個完全獨立的進程”(python-daemon包會這樣做)。 在其他情況下,您應該重定向到os.devnull子級的stdin / stdout / stderr,以避免等待終端的輸入和/或虛假輸出

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM