TTY在unix ps命令中的含义是什么?

当我运行PS时,其中一列输出是TTY。 这是什么意思? 特别是,作为“??”的价值如何 与“ttys000”比较?

我问,因为我有一个Java程序通过ProcessBuilder执行sort ,当这个程序通过我的IDE(IntelliJ)运行时,该过程比在IDE外部作为可执行jar运行时少5倍。

在每种情况下,我在运行排序时运行ps,唯一的区别是IDE创建一个TTY为??的进程。 而jar创建一个TTY为ttys000的进程。

TTY是计算机终端。 在ps的上下文中,它是执行特定命令的终端。

缩写代表“TeleTYpewriter”,它是允许用户连接到早期计算机的设备。

根据您的情况,jar会创建一个名为“ttys000”的虚拟终端,但IDE不会附加到虚拟终端以执行该命令。

进程可以(并且通常是)绑定到“控制终端”。 该终端可以是串行线末端的硬件,或者今天更可能是虚拟软件等价物。 TTYinheritance自父进程。 很可能你的IDE与TTY脱离关联,当你在java程序之外启动时,你会inheritance你的shell的TTY。