Python TTY控件

Python TTY控件,第1张

概述我想我不清楚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

我想我不清楚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程序并得到了他们想要分享的解释吗?

感谢您娱乐我的基本问题:)

最佳答案我至少可以看到你失踪的两件事 – 可能会有更多:

首先,在关闭旧的标准输入/标准输出之后,在打开新的TTY之前,需要在子进程中调用setsID().这有两个重要的事情 – 它使你的新进程成为新会话的领导者,并且它将其与之前的控制终端解除关联(仅仅关闭该终端是不够的).这意味着当你打开新的tty时,它将成为你想要的控制终端.

其次,您需要设置TERM环境变量以匹配新的tty.

总结

以上是内存溢出为你收集整理的Python TTY控件全部内容,希望文章能够帮你解决Python TTY控件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存