【发布时间】:2011-08-19 20:04:28
【问题描述】:
我想我不清楚 getty/agetty/mgetty 程序在 linux/unix 机器上的功能是什么。我可以在 tty 上启动一个 shell,如下所示:
TTY = '/dev/tty3'
cpid = os.fork()
if cpid == 0:
os.closerange(0, 4)
sys.stdin = open(TTY, 'r')
sys.stdout = open(TTY, 'w')
sys.stderr = open(TTY, 'w')
os.execv(('/bin/bash',), ('bash',))
..如果我切换到 tty3,则有一个 shell 正在运行——但一些击键被忽略/永远不会被发送到 shell。 shell 知道 TTY 设置不正确,因为 bash 会说“无法打开 tty,作业控制已禁用”
我知道 'termios' 模块具有更改 TTY 设置的功能,这是 'tty' 模块使用的功能,但我找不到 python 正确设置 TTY 并启动 shell 的示例。我觉得它应该是一些简单的东西,但我不知道在哪里看。
查看 *etty 程序的源代码对我没有帮助 - C 在我看来像希腊语:-/
也许我只是没有寻找合适的条款?过去有人用 Python 替换了 *etty 程序,并且有愿意分享的解释吗?
感谢您回答我的基本问题 :)
【问题讨论】:
标签: python linux unix tty termios