簡體   English   中英

如何繼續在后台執行正在運行的python進程

[英]How to continue to executing running python process in background

可能問題是晦澀的。 下面的示例代碼用於闡明。

# file: sock.py

password = getpass.getpass("Password: ")


def run_socket_server():
    with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s:
        # code...


if __name__ == "__main__":
    run_socket_server()

運行腳本

python sock.py
Password:   # enter password

此后,該進程不會在后台運行,從而阻止了終端中的用戶輸入。 所以問題是如何繼續在后台執行python進程以允許用戶在終端中輸入?

此解決方案假定您想不變地使用Python程序。

當您的程序要求輸入密碼時,它必須首先在前台運行。 運行為

python sock.py &

當它想讀取密碼時,將通過信號SIGTTIN停止它。 這就是為什么像您一樣在前台啟動它的原因。

如果在讀取密碼后不需要任何其他終端輸入,則可以在按CTRL + Z輸入密碼后將其停止,然后通過執行bg將其發送到后台。

(如果由於某種原因,您需要將作業重新放在前台,例如要提供輸入,請執行fg 。)

您想在后台運行python代碼時訪問終端,可能需要在末尾添加&符

python sock.py &

暫無
暫無

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

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