web-dev-qa-db-ja.com

ターミナルで使用する場合、ctrl-xはどの信号を送信しますか?

Linux/Unixにはシグナルがあります。の CtrlC 1つ(SIGINT)は私には明らかです。現在、他のいくつかのアプリケーションでは、 CtrlX?!それはシグナルですか、それともエスケープシーケンスを生成しますか?に似たものとして使用できるものは他にありますか CtrlC ( CtrlV、 CtrlX ...)?

誰かが手がかりを持っている場合、bashよりもCに精通しているが、両方の言語での回答は大歓迎です!

42
imacake

すべての端末制御文字の割り当てを取得するには:

stty -a
76
jfg956

誤解がある可能性があります。 CtrlC 信号を生成しません。押すことは完全に可能です CtrlC どこでも、悪いことは起こりません(たとえば、すべてのテキストエディタまたはワードプロセッサで、「コピー」の事実上の標準です)。

ただし、プログラムを実行するとシェル内の場合、キー入力は実際にはプログラムではなくシェルに入ります。シェルは(ほとんど)すべてをプログラムのstdinに転送し、stdoutからのすべてのものを端末または別のプロセスまたはファイル(パイプまたはリダイレクトを使用した場合)に転送します。

シェルがあなたが押すのを見たら CtrlC、そしてシェルは割り込み信号を送信します。しかし、それは実際にはシェルが行うことであり、キーの組み合わせによって魔法のように発生することではありません。

約 CtrlX、あなたはおそらく意味 CtrlZ。これによりプロセスが停止し、シェルはfgで使用できる番号を出力し、それを再実行します。

51
Damon

端末は特定のキーシーケンスに特別な意味を割り当てます。これには、文字の削除、行の先頭までの削除( CtrlU )、...

具体的には、ターミナルISIGローカルモードが有効な場合:

  • VINTR(通常 CtrlCSIGINT(ユーザーによる割り込み)を生成します。
  • VQUIT(通常 Ctrl\SIGQUITを生成します(SIGINTと同様ですが、コアもダンプします)。
  • VSUSP(通常 CtrlZSIGTSTP(端末I/Oで停止)を生成します。
  • VDSUSP(一部のシステムでは、Linuxではありません)は、プログラムが読み取ろうとするとSIGTSTPを生成します。

上記は設定可能です。これは termios(3) マンページに記載されています。

15
ninjalj

から ウィキペディア

CtrlxCtrle :$ EDITORプログラムの現在の行を編集します。未定義の場合はviを編集します。

CtrlxCtrlr :inputrcファイルの内容を読み取り、そこにあるバインディングまたは変数の割り当てを組み込みます。

CtrlxCtrlu :増分アンドゥ、各行ごとに個別に記憶されます。

CtrlxCtrlv :bashの現在のインスタンスに関するバージョン情報を表示します。

CtrlxCtrlx :カーソルを古い位置に切り替えます。 (C-x、xには交差形状があるため)。

1つの追加の使用法 Ctrlx シェルでコマンドを入力するときに*を展開することです。

あなたが持っていると言う:

$ ls *

押す Ctrlx その後 * *を現在のディレクトリ内のすべてのアイテムに展開し、次のようにします。

$ ls dir1 dir2 file1 file2 file3`

上記の使用方法については、 SuperUserのこのトピック を参照することもできます。

13
Nobilis

Linux/Unixにはシグナルがあります。の Ctrl+C 1つ(SIGINT)は私には明らかです...

システムで使用可能なシグナルのリストが必要な場合は、signum.hは役に立ちます。以下はDebian 7.3のものです。

/* Signals.  */
#define SIGHUP      1   /* Hangup (POSIX).  */
#define SIGINT      2   /* Interrupt (ANSI).  */
#define SIGQUIT     3   /* Quit (POSIX).  */
#define SIGILL      4   /* Illegal instruction (ANSI).  */
#define SIGTRAP     5   /* Trace trap (POSIX).  */
#define SIGABRT     6   /* Abort (ANSI).  */
#define SIGIOT      6   /* IOT trap (4.2 BSD).  */
#define SIGBUS      7   /* BUS error (4.2 BSD).  */
#define SIGFPE      8   /* Floating-point exception (ANSI).  */
#define SIGKILL     9   /* Kill, unblockable (POSIX).  */
#define SIGUSR1     10  /* User-defined signal 1 (POSIX).  */
#define SIGSEGV     11  /* Segmentation violation (ANSI).  */
#define SIGUSR2     12  /* User-defined signal 2 (POSIX).  */
#define SIGPIPE     13  /* Broken pipe (POSIX).  */
#define SIGALRM     14  /* Alarm clock (POSIX).  */
#define SIGTERM     15  /* Termination (ANSI).  */
#define SIGSTKFLT   16  /* Stack fault.  */
#define SIGCLD      SIGCHLD /* Same as SIGCHLD (System V).  */
#define SIGCHLD     17  /* Child status has changed (POSIX).  */
#define SIGCONT     18  /* Continue (POSIX).  */
#define SIGSTOP     19  /* Stop, unblockable (POSIX).  */
#define SIGTSTP     20  /* Keyboard stop (POSIX).  */
#define SIGTTIN     21  /* Background read from tty (POSIX).  */
#define SIGTTOU     22  /* Background write to tty (POSIX).  */
#define SIGURG      23  /* Urgent condition on socket (4.2 BSD).  */
#define SIGXCPU     24  /* CPU limit exceeded (4.2 BSD).  */
#define SIGXFSZ     25  /* File size limit exceeded (4.2 BSD).  */
#define SIGVTALRM   26  /* Virtual alarm clock (4.2 BSD).  */
#define SIGPROF     27  /* Profiling alarm clock (4.2 BSD).  */
#define SIGWINCH    28  /* Window size change (4.3 BSD, Sun).  */
#define SIGPOLL     SIGIO   /* Pollable event occurred (System V).  */
#define SIGIO       29  /* I/O now possible (4.2 BSD).  */
#define SIGPWR      30  /* Power failure restart (System V).  */
#define SIGSYS      31  /* Bad system call.  */
#define SIGUNUSED   31

#define _NSIG       65  /* Biggest signal number + 1
                   (including real-time signals).  */

#define SIGRTMIN        (__libc_current_sigrtmin ())
#define SIGRTMAX        (__libc_current_sigrtmax ())
6
jww