当我运行 PS 时,其中一列输出是 TTY。这是什么意思?特别是“??”的 as 值如何?与“ttys000”比较?
我问是因为我有一个sort
通过 ProcessBuilder 执行的 Java 程序,并且当这个程序通过我的 IDE (IntelliJ) 运行时,该过程比在 IDE 之外作为可执行 jar 运行时少 5 倍。
在每种情况下,我都会在排序运行时运行 ps,唯一的区别是 IDE 创建一个 TTY 为 ?? 而 jar 创建一个 TTY 为 ttys000 的进程。
TTY是计算机终端。在 的上下文中ps
,它是执行特定命令的终端。
该缩写代表“TeleTYpewriter”,它是允许用户连接到早期计算机的设备。
就您的情况而言,jar 会创建一个名为“ttys000”的虚拟终端,但 IDE 不会连接到虚拟终端来执行命令。
一个进程可以(并且通常是)绑定到一个“控制终端”。该终端可能是串行线路末端的硬件,或者今天更可能是虚拟软件等价物。TTY 继承自父进程。您的 IDE 很可能会与其 TTY 解除关联,并且在您的 java 程序外部启动时会继承您的 shell 的 TTY。