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