【发布时间】:2012-09-28 22:45:57
【问题描述】:
基本上我想在后台启动一个守护程序,它仍然会在控制台中提示用户输入密码。我用 pexpect 创建了这个,但是当这个程序结束时,它会杀死守护进程,因为它是一个子进程。所以显然 pexpect 不会为此工作。有没有人知道这样做的方法?
#!/usr/bin/env python
import pexpect
import getpass
child = pexpect.spawn('python daemon.py &')
child.expect_exact('Password:')
passwd = getpass.getpass()
child.sendline(passwd)
index = child.expect_exact('Started Successfully')
print index
【问题讨论】:
-
我很确定你不能强迫你的程序不关闭......所以用户可以关闭你的程序来规避......
-
好吧,如果用户明确关闭守护程序,我并不担心。我要做的是启动一个后台进程,用户可以在其中输入一个一次性密码在守护进程的开始。
-
您是否考虑过使用 os.fork() 然后运行守护程序模块?
-
是的,但我不知道如何将密码传递给守护进程。必须保持密码安全,即不要存储在硬盘上,也不要在屏幕上显示。
-
如果是 windows 我可以帮你... :/
标签: python daemon background-process