在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>
uCtrlx<kbd]Ctrl>
vCtrlxCtrlx:用旧位置替换光标。(C-x,因为x具有交叉形状(。
Ctrl
x的另一个用法是在shell中键入命令时扩展*
。
假设你有:
$ ls *
按Ctrlx,然后按* 你也可以参考SuperUser上的这个主题来了解我上面描述的用法。$ ls dir1 dir2 file1 file2 file3`
终端为某些键序列赋予特殊意义。这包括删除一个字符,删除到行的开头(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 ())