Подтвердить что ты не робот

Какой сигнал посылает ctrl-x при использовании в терминале?

В Linux/Unix есть сигналы. Мне кажется, что Ctrl C один (SIGINT). Теперь, в некоторых других приложениях есть сигналы через Ctrl X?! Это даже сигнал или он генерирует escape-последовательность? Есть ли что-нибудь еще, что я могу использовать как нечто похожее на Ctrl C (Ctrl V, Ctrl X...)?

Если у кого есть ключ, я знаком с C больше, чем bash, но ответы на обоих языках оценены!

4b9b3361

Ответ 1

Чтобы получить все назначения символов управления терминалом:

stty -a

Ответ 2

Возможно, существует недоразумение. Ctrl C не генерирует сигнал. Вполне возможно нажать Ctrl C в любом месте, и не произойдет никаких плохих событий (например, в каждом текстовом редакторе или текстовом редакторе, что де-факто стандарт для "копирования" ).

Однако, когда вы запускаете программу в оболочке, ваши нажатия клавиш действительно попадают в оболочку, а не в вашу программу. Оболочка будет перенаправлять (почти) все на вашу программу stdin и пересылать все, что поступает из stdout, в терминал или другой процесс или файл (если вы использовали канал или перенаправление).

Если оболочка видит, что вы нажимаете Ctrl C, тогда оболочка отправляет сигнал прерывания. Но это действительно что-то, что делает оболочка, а не то, что волшебным образом происходит из-за комбинации клавиш.

О Ctrl X, вы, вероятно, имели в виду Ctrl Z. Это останавливает процесс, и оболочка выводит число, которое вы можете использовать с помощью fg, чтобы запустить его снова.

Ответ 3

Терминал назначает особый смысл определенным последовательностям клавиш. Это включает удаление символа, удаление до начала строки (Ctrl U),...

В частности, когда включен локальный режим терминала ISIG:

  • VINTR (обычно Ctrl C) генерирует SIGINT (прерывается пользователем).
  • VQUIT (обычно Ctrl \) генерирует SIGQUIT (например, SIGINT, но также и ядро ​​дампа).
  • VSUSP (обычно Ctrl Z) генерирует SIGTSTP (останавливается терминальным вводом-выводом).
  • VDSUSP (в некоторых системах, а не в Linux) генерирует SIGTSTP, когда программа пытается его прочитать.

Вышеприведенные конфигурации. Это описано в termios (3) manpage.

Ответ 4

От Wikipedia

Ctrl x Ctrl e: редактирует текущую строку в программе $EDITOR, или vi если undefined.

Ctrl x Ctrl r: читайте содержимое файла inputrc и включая любые привязки или назначения переменных, найденные там.

Ctrl x Ctrl u: Инкрементное отмена, отдельно запоминаемая для каждой строки.

Ctrl x Ctrl v: отобразить информацию о версии текущего экземпляра bash.

Ctrl x Ctrl x: чередует курсор со старой позицией. (С-х, потому что x имеет форму пересечения).

Еще одно использование Ctrl x - это расширение * при вводе команды в оболочке.

Скажите, что у вас есть:

$ ls *

Нажав Ctrl x, а затем * разворачивает * ко всем элементам в текущем каталоге примерно так:

$ ls dir1 dir2 file1 file2 file3`

Вы также можете обратиться к этой теме в SuperUser для использования, описанного выше.

Ответ 5

В Linux/Unix есть сигналы. Мне кажется, что Ctrl + C один (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 ())