2017-07-29 18 views
2

プロセスがユーザの入力を待っているときに^ cを押すと、そのプロセスを殺すOSにシグナルが送られます。しかし、そのプロセスがbash/pythonインタプリタである場合、同じことは起こりません。 echo^cはコンソールに何かを表示するので、有効なUnicode文字であると仮定しています。シグナルの寿命の詳細

文字入力は、入力ストリームにリダイレクトされ、そのプロセスが消費し、一部が信号として使用されます。それはどこで決定されますか、すべての事前定義された設定が使用され、それらの設定値はいつ設定されますか?

答えて

1

あなたはTTY layerの魔法の世界に遭遇しました。

TL; DRは、パイプ(たとえば、標準入力にパイプされたファイルや他のcmd)と、標準入力にコンソールが接続されていることの間に大きな違いがあることです。コンソールの回線規律は^ C文字(これはちょうど普通の8ビット文字です)を乗っ取ってフォアグラウンドプロセスグループに信号を送ります。