2011-08-18 15 views
19

PSを実行すると、出力される列の1つがTTYになります。これは何を意味するのでしょうか?特に、 "??"の価値としてどのようにしていますか? "ttys000"と比較しますか?unix psコマンドでTTYの意味は何ですか?

ProcessBuilderを使用してJavaプログラムをsortで実行しているので、このプログラムをIDE(IntelliJ)経由で実行すると、IDEの外部で実行可能なjarとして実行する場合に比べて処理が5倍少なくなります。

ソートが実行されているときにpsを実行しますが、唯一の違いはIDEのcreatsがTTYのプロセスですか? jarはttyが1000のTTYのプロセスを作成します。

答えて

24

TTYは、コンピュータ端末です。 psのコンテキストでは、特定のコマンドを実行した端末です。

略語は、ユーザーが初期のコンピュータに接続できるようにしたデバイスである「TeleTYpewriter」の略です。

状況に応じて、jarは 'ttys000'という名前の仮想端末を作成しますが、IDEは仮想端末に接続してコマンドを実行しません。

+0

興味深いですが、どうすればターミナルに接続されていない状態で実行することができますので、パフォーマンスが低下することはありませんか? – Zugwalt

+0

コマンド行に「&」を追加して、プロセスを端末から切り離します。しかし、パフォーマンス・ヒットがコマンドが端末に接続された結果である場合、私は驚くだろう。私は、IDEが何らかの最適化を実行している可能性が高いと思います。私はあなたの結果について聞くのを楽しみにしています。 –

+0

&といっしょにしても、それはまだ時間がかかり、psでTTY000のTTYで表示されます。しかし、私はIDEで単純なJavaプログラムを介してjarを実行すると、分離された短い実行されます。どのような最適化が可能か、OSX端末自体が遅くなっているのだろうか。 – Zugwalt

2

プロセスは、「制御ターミナル」に結合することができます(通常は)。この端末は、シリアルラインの終わりにハードウェアであってもよいし、今日の仮想ソフトウェアに相当するものであってもよい。 TTYは親プロセスから継承されます。ほとんどの場合、IDEはTTYとの関連を解除し、Javaプログラムの外で起動するとシェルのTTYを継承します。