34

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

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

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

4

2 回答 2

37

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

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

就您的情况而言,jar 会创建一个名为“ttys000”的虚拟终端,但 IDE 不会连接到虚拟终端来执行命令。

于 2011-08-18T20:35:07.790 回答
5

一个进程可以(并且通常是)绑定到一个“控制终端”。该终端可能是串行线路末端的硬件,或者今天更可能是虚拟软件等价物。TTY 继承自父进程。您的 IDE 很可能会与其 TTY 解除关联,并且在您的 java 程序外部启动时会继承您的 shell 的 TTY。

于 2011-08-18T20:40:01.070 回答