タグ

ttyに関するakaneharaのブックマーク (7)

  • [翻訳] 端末の神秘を解き明かす - Qiita

    原文 The TTY demystified http://www.linusakesson.net/programming/tty/ 翻訳 TTYサブシステムはLinuxおよびUNIX一般の設計において中心的な位置を占めます。しかし、不幸なことにその重要性はしばしば見過ごされ、良い入門記事を見つけづらくなっています。それでも、LinuxにおけるTTYの基礎知識は開発者やパワーユーザーにとって不可欠です。 これから見ていくシステムはあまりエレガントではありません。TTYシステムはユーザーから見るととても便利ですが、実際は特殊ケースが多く、入り組んでいます。なぜこうなっているのかを理解するには、歴史を紐解く必要があります。 歴史 1869年、株価表示器が発明されました。株価表示器は、タイプライター、長いワイヤーのペア、表示用紙テーププリンタから構成される電気機械で、遠く離れた場所にリアルタイ

    [翻訳] 端末の神秘を解き明かす - Qiita
  • ttyについて ttyやptsってなんぞ? - それマグで!

    PCにシリアルコンソールでログインできるように設定した。シリアルコンソールを使えばNICの設定などでもあわてずに利用できる。便利。シリアルコンソールでつかうmgetty mingettyのttyってなんだろう ttyとは、 どうやら、標準出力の接続先デバイス事のらしい。一般的にはpts、RS232C経由などはttyS0が標準出力の接続先になっていて、中継しているプログラムがmgetty。 図で表すと PC----ssh------/dev/pts/1--sshd----bash #ssh が接続されている PC----rs232c---/dev/ttyS0--mgetty--bash #rs232c が接続されている とttyなど仮想端末経由になっている。コレ今はよく解ったけど、ずっとよく解らなかった。 私が理解できるようになるまで、次のプロセスがありました。 2ヶ月前 先輩に訊いてみた

    ttyについて ttyやptsってなんぞ? - それマグで!
  • Linuxでプロセスのデーモン化 - Qiita

    プロセスと周辺の概念 TTY (仮想端末) |-セッション |-プロセスグループ |-プロセス 「TTY = セッション 1>N プロセスグループ 1>N プロセス」 プロセスの中の一つがセッションリーダーで、その中の複数がプロセスグループリーダー。 セッション TTYと結びついたログインセッションのこと。一つ以上のプロセスグループの集まりであり、セッションリーダーとなるプロセスが制御端末とやりとりをして端末切断時に子プロセスを全て終了させる役割を持つ。自身が属するセッション内でしかプロセスグループは生成できない。 プロセスグループ プロセスの集まりで、シグナルを他のプロセスへ送信することができる。メンバーはプロセスグループリーダーのプロセスIDをグループIDとして持つ。プロセスグループのリーダーになるにはsetpgid()かsetsid()を呼び出す。 fork() この関数を呼ぶとプロ

    Linuxでプロセスのデーモン化 - Qiita
  • シェルスクリプトでパスワード入力プロンプト - Qiita

    ユーザーにパスワードを入力してもらうシェルスクリプトを作成していたら bash の read コマンドに便利なオプションがあったのでメモ。 入力プロンプトに "Password:" と表示するには -p が使えます。 入力元が端末のときのみプロンプトを表示するという賢いオプションです。 -p prompt Display prompt on standard error, without a trailing new- line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal.

    シェルスクリプトでパスワード入力プロンプト - Qiita
  • 標準入出力先が実際には端末かどうかを調べるには | さかな前線

    手抜き記事です. というかこっちはサブブログなので平常運転がこれでないといかんのですが. さて,コマンドラインプログラムにおいて,標準入力・標準出力・標準エラー出力がそれぞれ端末かリダイレクトまたはパイプされて別のファイルまたはプロセスに渡されているかどうかを調べたいことがあります. 今日はその方法を. そもそもなんでそんなことしたいか POSIXのエスケープシーケンスによって端末に出力する文字の色を適当に変えてみましょう. #include <iostream> #include <string> #include <boost/format.hpp> std::string gen(int col) { static const char esc = 0x1b; return (boost::format("%c[%dm") % esc % col).str(); } int main

  • シェルスクリプトで出力先がターミナルかどうかを判定する - Hack like a rolling stone

    先ほどの記事 でエスケープシーケンスまわりについて調べている時に、 「出力先がターミナル(tty)の場合」と「出力先がファイル、その他の場合」でエスケープシーケンスを出し分けする方法が気になりました。 たとえば、ls コマンドでは $ ls --color=auto と実行すると、ターミナルへの出力の場合にはエスケープシーケンスによって色付きで表示されますが、 $ ls --color=auto > foo や $ ls --color=auto | less のようにファイルや別コマンドへの入力にした場合にはエスケープシーケンスが出力されません。 これと同じ動作をシェルスクリプトで実現しようとした場合、test コマンドの -t を使います。 t 1 で標準出力がターミナルかどうかを調べることができます。 if [ -t 1 ]; then printf "^[[31mhello wor

    シェルスクリプトで出力先がターミナルかどうかを判定する - Hack like a rolling stone
  • Linuxhack.jp » デーモンプロセスの構造

    バックグラウンドで呼び出しがあるまで待機状態にあり、呼び出されるときにだけ動作する特殊なプロセスとして、デーモンプロセスがあります。デーモンプロセスは名前こそデーモンとついてますが、基的に通常のプロセスと同じです。しかし、その動作には通常のプロセスとは異なる点がいくつかあります。具体的にはfork()、exec()系などのプロセス生成の過程において、実行するシステムコールは通常のプロセスと変わらないのですが、デーモンプロセスの特徴を実現するために行うプロセス生成の工程が異なります。デーモンプロセスを作成するためには以下のような処理が必要になります。 ・ファイスディスクリプタのクローズ ・端末セッションとプロセスグループの切り離し ・ワーキングディレクトリの移動 ・ファイル生成マスク値の変更 ・SIGCHILDシグナルの処理 以上の項目はデーモンプロセスを生成する上で、実装すべき処理になり

  • 1