タグ付けされた質問 「controlling-terminal」



2
制御端末の本名を取得するにはどうすればよいですか?
制御端末の実際の名前(ある場合はエラー)をパス名として取得するにはどうすればよいですか? 「本名」とは、を意味/dev/ttyし、同じ端末を参照するために他の任意のプロセスで使用することはできません。可能な場合は、単純なシェルコード(以下の例のような)として、そうでない場合はC関数として、答えを好みます。 これは、標準入力がリダイレクトされても機能する必要があるので、ttyユーティリティを使用できないことに注意してください。標準入力に接続された端末のファイル名を出力するだけなnot a ttyので、このような場合はエラーにttyなります。 Linuxでは、以下を使用できます。 echo "/dev/`ps -p $$ -o tty | tail -n 1`" しかし、これは移植性がありません。POSIXによると、端末名の形式は指定されていません。 C関数に関してctermid (NULL)は/dev/tty、ここでは役に立たないを返します。 注:zshドキュメントによれば、 zsh -c 'echo $TTY' しかし、現在(バージョン5.0.7)は、標準入力と標準出力の両方がリダイレクトされると失敗します。 $ zsh -c 'echo $TTY > /dev/tty' < /dev/null /dev/pts/9 $ zsh -c 'echo $TTY > /dev/tty' < /dev/null > /dev/null /dev/tty

3
制御端末から切断されたコマンド/スクリプトを呼び出しますか?
通常は自動化されたプロセスとして実行されるスクリプト(cron、Jenkinsなど)の動作を調査しています。スクリプトは、対話的に実行すると、(最終的に)動作が異なる(ユーザー入力を求める)コマンドを呼び出すことができます。たとえば、patchリバースパッチで何をするかをsvn尋ね、パスワードを要求しますが、非対話的に実行するとどうなるかを確認する必要があります。 patch非インタラクティブであることを説得するのはかなり簡単です。stdout非ttyになるようにリダイレクトする必要があります。 $ </dev/null > >(cat) /path/to/myscript --args ただしsvn、存在する場合は制御端末に接続します。渡すスクリプトを編集すること--non-interactiveは、実際にはオプションではありません。これはいくつかのレベルの深さから来ており、すべての呼び出しを見つけたと確信するのは難しいためです。 (/dev/tty存在しないため)制御端末なしで、非対話的にスクリプト/コマンドを呼び出す方法はありますか?私はまだ端末に行くよりstdout / stderrを好みます。 (「非対話型シェルでスクリプトを実行する」という質問を見つけましたが、その答えはcronとユーザー環境の違いについて説明しています。非対話型以外のすべての違いはすでに排除しています。)

3
背景、ゾンビ、デーモン、cttyなし-これらの概念は関連していますか?
-どのようにこれらのプロセスの概念は一緒に関連してbackground、zombie、daemonとwithout controlling terminal? 特にのコンセプトではcontrolling terminal、彼らはどこか近づいているように感じますが、Linuxについての記事を読む子供に嘘をつくことなく説明する必要がある場合など、ストーリーを伝えるための情報はまだあまりありません。 更新#1:たとえば(それが本当かどうかはわかりません) background-- 親なしで残されたバックグラウンドプロセスであるため、zombieフォアグラウンドプロセスはになれませんzombiezombie daemon-- without cttyすべてdaemonsがなしcttyで実行されますが、すべてのプロセスcttyがdaemons background- daemon- background process再び対話的に実行するために取得することができ、daemon is not zombie- without ctty- zombieがある場合に無関心であるcttyそれに接続されているかどうか background- without ctty- processes彼らが持っている一方で、バックグラウンドに送られctty、そして場合はデーモンやダイなっcttyそれらから取られます
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.