しばらく実行した後、プログラムに終了キー(Q + Enter)を送信します。

しばらく実行した後、プログラムに終了キー(Q + Enter)を送信します。

一部の端末プログラムにはEscキーがあります。安全に実行を停止します。たとえば、次のようになります。

Q+Enter

~からこの問題このtimeoutコマンドを使用すると、指定された時間後に信号をプログラムに送信できることを理解しています。しかし、私が知っている限り、これらの信号のどれも私が言及した終了キーを押すことと同じではありません。

次のコマンドを使用して信号のリストを表示できますkill -l

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    

プログラムが安全に停止されるように、一定時間が経過した後にプログラムに終了キーを押す(echo文字)を送信したいと思います。q

どうすればいいですか?

ベストアンサー1

キー入力と信号は、プログラムと通信する2つの異なる方法です。プログラムにキーを押すのと同じ信号がある場合、これはプログラムの作成者がそのように設計したためです。

端末自体は、いくつかのキーをCtrl+CからSIGINTなどの信号に変換します。プログラムは、端末がキー入力を信号に変換するのではなく、これらのキー入力自体をキャプチャするように端末設定を変更できます。同じターミナルメカニズムを使用すると、キー(通常はCtrl+ D)を使用して入力端に切り替えることができます(行の先頭でキーを押した場合のみ)。これは信号ではありません。これは、プログラムが端末から入力を読み取ろうとしたときに、ファイル終了マークを受け取ったことを意味します。

端末が消えると、カーネルは端末で実行されているフォアグラウンドプログラム(存在する場合)にSIGHUP信号を送信します(シェルの場合、シェルはフォアグラウンドジョブに信号を再送信します)。 HUPは「(モデム)停止」に由来し、現代ではGUIで端末ウィンドウを閉じるなどの状況に適用されます.多くのプログラムがこの信号を捕捉して安全に閉じるため、入力を送信するよりも信号を送信する方が便利な場合は、これがプログラムに適していることを確認する必要があります。

入力を送信する必要がある場合は、最も簡単な方法はプログラムを実行することです。画面screen -Xスクリーンセッションに入力を送信するために使用されます(はい)。

おすすめ記事