ctrl-x在终端中使用时会发送哪个信号



在Linux/Unix上有信号。CtrlC一个(SIGINT(对我来说是显而易见的。现在,在其他一些应用程序中,有通过CtrlX的信号?!这甚至是一个信号吗?还是它生成了一个转义序列?我还有什么可以用作类似于CtrlC的东西吗?

如果有人有线索的话,我对C比bash更熟悉,但我们都很感激这两种语言的答案!

要获得所有终端控制字符分配:

stty -a

可能存在误解CtrlC不产生信号。在任何地方按CtrlC都是完全可能的,不会发生任何不好的事情(例如,在每个文本编辑器或文字处理器中,这是"复制"的事实标准(。

然而,当您在shell中运行程序时,按键实际上会进入shell,而不是程序。shell将(几乎(所有内容转发到程序的stdin,并将来自stdout的任何内容转发到终端或另一个进程或文件(如果使用管道或重定向(。

如果shell看到您按下CtrlC,则shell发送中断信号。但这实际上只是外壳所做的事情,而不是因为按键组合而神奇地发生的事情。

关于CtrlX,您的意思可能是<kbd]Ctrl>Z

来自维基百科

Ctrl x Ctrl e

CtrlxCtrlr:读取inputrc文件的内容,以及合并在那里找到的任何绑定或变量赋值。

Ctrlx<kbd]Ctrl>

u

Ctrlx<kbd]Ctrl>

v

CtrlxCtrlx:用旧位置替换光标。(C-x,因为x具有交叉形状(。

Ctrl x的另一个用法是在shell中键入命令时扩展*

假设你有:

$ ls *

Ctrlx,然后按*

$ ls dir1 dir2 file1 file2 file3`

你也可以参考SuperUser上的这个主题来了解我上面描述的用法。

终端为某些键序列赋予特殊意义。这包括删除一个字符,删除到行的开头(CtrlU(。。。

具体来说,当终端ISIG本地模式启用时:

  • VINTR(通常CtrlC(生成SIGINT(被用户中断(
  • VQUIT(通常Ctrl\(生成SIGQUIT(类似于SIGINT,但也包括转储核心(
  • VSUSP(通常CtrlZ(生成SIGTSTP(由终端I/O停止(
  • VDSUSP(在某些系统上,而不是在Linux上(在程序尝试读取时生成SIGTSTP

以上是可配置的。这一点已记录在白蚁(3(手册页中。

在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 ())

相关内容

  • 没有找到相关文章

最新更新