タグ

processとforkに関するclavierのブックマーク (4)

  • PTY を使ってシェルの入出力を好きなようにする - Hibariya

    あるプログラム (例えばシェル) を実行して、その入出力を好きなようにしたいことがある。 次のようなことができればいい。 入出力を検知して任意の処理ができる。 入出力は行単位ではなく文字単位くらいの細かさ (改行を待たない)。 普通の文字だけでなくその間に挟まっているエスケープシーケンスも取得できる。 Ctrl+C のような特殊文字が送られた場合もそれを検知できる。 既存のもので例えるなら script(1) にできることに近い。 こんなふうに入出力を好きにできれば、キーを入力するたびに「音を鳴らしたり」とか「ターミナルの様子を遠くの誰かとありのまま共有したり」とか、そういったことができて嬉しい。簡単なターミナルマルチプレクサも実装できたりしないかな。 上で箇条書きしたようなことは子プロセスに新たな端末を割り当てることによって実現できる。 子プロセスに割り当てた端末を親プロセスに監視させる

  • Ctrl+Cとkill -SIGINTの違いからLinuxプロセスグループを理解する | ギークを目指して

    しばらくLinuxネタが続く・・。 近いうちに最近出たJava8ネタを書いてみようと思います。が、もう少しLinuxネタにお付き合いください。 前回はsshdを対象に親プロセスをkillした場合の動作を確認した。 killされたプロセスの子プロセスは孤児プロセスとなり、カーネルによって自動的にinitプロセスの子として扱われる事を説明した。(この動作を「リペアレンティング」と呼ぶ) 今回はこの続き。 Linuxで作業していてCtrl+Cしてプロセスを終了した場合、フォアグラウンドのプロセスやその子プロセスも一緒に終了する。 ということは、子プロセスは孤児として扱われず、リペアレンティングされていないことになる。 今回の記事ではこの振る舞いの違い(リペアレンティングされるか否か)に着目し、kill -SIGINTコマンドとCtrl+Cの違いについて考えていく。 そもそもkillコマンドやCt

    Ctrl+Cとkill -SIGINTの違いからLinuxプロセスグループを理解する | ギークを目指して
  • プロセス・パイプ・リダイレクション・ファイルディスクリプタの実体を見に行く - ザリガニが見ていた...。

    プロセス置き換えとか、名前付きパイプとか、とても便利な機能なのだけど、その仕組みはどうなっているのだろう?断片的な知識ばかりでは、その核心にはなかなか辿り着けない。サンプルコードの真似はできるけど、それ以上の発想はできない...。もっと根的なところからちゃんと理解しておかないと、いつまでたってもコマンドの使い方の質が理解できないと感じた。プロセスとは何か?パイプとは何か?リダイレクションとは何か?ファイルディスクリプタとは何か?可能な限りその質を探ってみようと思う。 UNIXのプロセス UNIXでは、複数のユーザーがログインした状態で、同時に複数の処理を依頼される状況が多々ある。 ところが、どんなに高性能なCPUであっても、ある瞬間に処理できるのはたった1つの処理だけである。 そんな時OSは、それぞれの処理に必要なメモリ領域を割り当てて、CPUをタイミングよく切り替えながら同時並行的

    プロセス・パイプ・リダイレクション・ファイルディスクリプタの実体を見に行く - ザリガニが見ていた...。
  • Python の subprocess の preexec_fn の実装と fork のスレッドセーフティー問題

    methane @methane @riywo fork してから exec する前に実行して欲しい関数を指定します。具体的には os.setsid とか指定します。(最近の Python だと start_new_session キーワード引数指定できますが)

    Python の subprocess の preexec_fn の実装と fork のスレッドセーフティー問題
  • 1