为啥emacs会逃避getty?

Posted

技术标签:

【中文标题】为啥emacs会逃避getty?【英文标题】:Why does emacs escape getty?为什么emacs会逃避getty? 【发布时间】:2022-01-22 13:33:38 【问题描述】:

我创建了两个虚拟连续剧

socat -d -d pty,raw,echo=0 pty,raw,echo=0

在特定情况下,我得到了 /dev/pts/9 和 /dev/pts/16 然后我在一侧启动屏幕,在一个 X 终端中,特别是 gnome-terminal

 screen /dev/pts/9 9600 vt52

getty 在另一边(从根),在另一个 X 终端(同样是 gnome-terminal)

getty pts/16 9600 vt52

然后我登录屏幕终端,我可以 ls 等。但是,当我启动 emacs(在屏幕内,所以它是文本版本,而不是 X 版本)时,我在 getty 的 X 终端上得到 emacs 的输出,而不是在屏幕内的X 终端。这怎么可能?我该如何解决?

我不知道这是否相关,但是当我登录时,我得到了

-bash: cannot set terminal process group (64718): Inappropriate ioctl for device
-bash: no job control in this shell

【问题讨论】:

(1) DISPLAY 环境变量控制连接到哪个 X 服务器。 (2) 您的设置可能被配置为使用emacsclient 或类似方法来连接到预先存在的 emacs 副本。 (3) 很多重要的细节并没有真正明确地包含在内,而且不完全清楚这个问题是否适合在这里而不是Unix & Linux。 您能说明哪些细节很重要吗?我可以编辑问题以反映这一点。不,emacs 不是 emacsclient 的链接 如果我没记错的话,DISPLAY 只对使用 X 服务器的程序很重要。在这种情况下,emacs 是作为文本界面程序而不是 X 程序启动的。 如果问题无关紧要,为什么还要在问题中谈论 X?更容易谈论终端。无论如何-您排除了emacsclient吗?另外,每个shell中tty命令的输出是什么? @CharlesDuffy 看到答案 【参考方案1】:

答案由 Andres Navarro (https://github.com/AndresNavarro82) 提供。必须使用setsid,即

sudo setsid getty pts/16 9600 vt52

【讨论】:

以上是关于为啥emacs会逃避getty?的主要内容,如果未能解决你的问题,请参考以下文章

osx 上的 emacs 23 和 24:为啥 aquamacs-kill-word 有时会删除到行尾?

为啥 emacs 会为修改过的文件创建临时符号链接?

为啥emacs中没有代码折叠?

为啥某些 Emacs 函数不能通过 `M-x` 使用?

为啥我的带有 ^ 的 Emacs 正则表达式不能匹配行的开头?

为啥是 Ctrl+.当我将它绑定到 Emacs 中的命令时不起作用?