【问题标题】:How to continue to executing running python process in background如何在后台继续执行正在运行的python进程
【发布时间】:2019-08-05 06:59:19
【问题描述】:

可能是这个问题晦涩难懂。下面的示例代码用于澄清。

# 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 linux shell


【解决方案1】:

此解决方案假定您要使用未更改的 Python 程序。

当您的程序要求输入密码时,它必须首先在前台运行。运行它作为

python sock.py &

当它想读取密码时会通过信号SIGTTIN 停止它。这就是为什么像你一样在前台启动它。

如果读取密码后不再需要终端输入,您可以在输入密码后按CTRL+Z将其停止,然后发送到后台执行bg。

(如果由于某种原因您需要再次将作业置于前台,例如提供输入,请执行fg。)

【讨论】:

    【解决方案2】:

    你想在后台运行python代码时访问终端,你可能需要在末尾添加&符号

    python sock.py &
    

    【讨论】:

    • 后台进程在尝试从终端读取密码时会被信号SIGTTIN停止。
    猜你喜欢
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2020-10-28
    相关资源
    最近更新 更多