Ctrl + cはプロセスを終了しません

Ctrl + cはプロセスを終了しません

私は答えを探していますが、これまで私の質問に対する答えは見つかりませんでした。現在Ubuntuサーバーにログインしており、プロセスの実行中は割り込みは実行されません。これは私のstty -aです。

user@Ubuntu1:~$ stty -a
speed 38400 baud; rows 93; columns 200; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;

私の.bashrcには割り込みを変更するエントリはありません。

これは、ルートを含むすべてのユーザーに同じです。また、別の端末を使用して別の場所からログインしようとしましたが、毎回同じ結果が出ました。 sshとssh -Xを使用してログインしました。

編集:ローカルでは、すべての割り込みが正常に機能します。

更新:まだ答えを探しています。私の友人も同じ問題があります。問題は深刻なようです。ログインすると(PC、Mac、Linuxで)、キーボードはこれらのキーを認識しません(マッピングが正しいにもかかわらず)。

ベストアンサー1

ctrl+cプログラムを終了しないでください。

そんなことではありません。

POSIX標準は、実行中のプログラムを制御するために使用される信号のセットを定義します。

  First the signals described in the original POSIX.1-1990 standard.
  Signal     Value     Action   Comment
  ──────────────────────────────────────────────────────────────────────
  SIGHUP        1       Term    Hangup detected on controlling terminal
                                or death of controlling process
  SIGINT        2       Term    Interrupt from keyboard
  SIGQUIT       3       Core    Quit from keyboard
  SIGILL        4       Core    Illegal Instruction
  SIGABRT       6       Core    Abort signal from abort(3)
  SIGFPE        8       Core    Floating point exception
  SIGKILL       9       Term    Kill signal
  SIGSEGV      11       Core    Invalid memory reference
  SIGPIPE      13       Term    Broken pipe: write to pipe with no
  SIGTERM      15       Term    Termination signal

-http://man7.org/linux/man-pages/man7/signal.7.html

ctrl+端末で実行されているプログラムにc「キーボード割り込み」信号を送信します。2

その信号の処理は完全にプログラムに依存し、必要なものは何でもできます。多くのスクリプト言語ソルバーは、デフォルトで呼び出されたスクリプトを終了して正常に終了することでこれを処理できます。

特に、自動コンテキストでプログラムを終了するには、killid(pid)でプロセスにシグナルを送信するために使用できるsingal 15を使用することをお勧めします。

kill -15 <pid>

私が知っている限り、プログラム自体はまだこの信号を受け取り、できるだけきれいに終了する必要があります。

プログラムがシグナル 15 を無視し、プログラムがまだ存在する場合 (および許可エラーによってシグナル転送が中断されない場合)

kill -9 <pid>

私が知る限り、シグナル9はカーネル(タスクマネージャとハードウェアインターフェイス)によって解釈され、カーネルは突然プログラムの処理を中断し、すべてのリソースを割り当て解除/解除します。

おすすめ記事