问题可能是晦涩的。下面的示例代码用于阐明。
# 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进程以允许用户在终端中输入?
答案 0 :(得分:2)
此解决方案假定您想不变地使用Python程序。
当您的程序要求输入密码时,它必须首先在前台运行。以
运行@Document(collection = "#{@entitiesProperties.getAdmissions()}")
在要读取密码时会通过信号python sock.py &
停止它。这就是为什么像您一样在前台启动它的原因。
如果在读取密码后不需要任何其他终端输入,则可以在输入密码后按 CTRL + Z 将其停止,然后将其发送到通过执行SIGTTIN
来实现背景。
(如果由于某种原因,您需要将工作重新放在前台,例如提供输入,请执行bg
。)
答案 1 :(得分:0)
您要在后台运行python代码时访问终端,可能需要在末尾添加和号
python sock.py &