为什么具有丰富终端的 socat 在 OSX 上会被信号 9 杀死?

为什么具有丰富终端的 socat 在 OSX 上会被信号 9 杀死?

我使用了以下命令这个问题测试一下使用socat搭建一个信号丰富的终端:

socat file:'/dev/tty',raw,echo=0 exec:'bash -li',pty,stderr,setsid,sigint,sane

在 Linux 上,它运行良好,一切都如预期。

在 OSX 上,我得到以下输出:

2023/03/24 22:15:52 socat[35049] E waitpid(): child 35050 exited on signal 9

是什么原因导致 OSX 在此处杀死子进程? 是否有可能阻止这种情况发生?

出于好奇,我尝试sudo并得到了相同的结果,所以我可以确认它与用户权限有关。

答案1

我尝试了各种选项,发现如果-i没有传递,那么进程就不会被终止。

socat file:'/dev/tty',raw,echo=0 exec:'bash -l',pty,stderr,setsid,sigint,sane

奇怪的是,无论如何,bash 看起来都是作为交互式 shell 启动的,正如我们所料,因为没有传递任何命令。

echo $-
himBH

不知何故,传递该-i选项会导致 OSX 感到愤怒,尽管它应该没有任何效果。

相关内容