Quel signal ctrl-x envoie - t-il lorsqu'il est utilisé dans un terminal?
sur Linux/Unix il y a des signaux. Le Ctrl C ( SIGINT
) est une évidence pour moi.
Maintenant, dans d'autres applications Il ya des signaux via Ctrl X ?!
C'est un signal ou ça génère une séquence d'évasion?
Y a-t-il autre chose que je puisse utiliser comme quelque chose de similaire à Ctrl "151930920 C ( Ctrl "151930920 V , Ctrl X ...)?
si quelqu'un a une idée, je connais C plus que bash, mais les réponses dans les deux langues sont appréciées!
5 réponses
pour obtenir toutes les attributions de caractères de contrôle terminal:
stty -a
il y a peut-être un malentendu. Ctrl C ne génère pas de signal. Il est parfaitement possible d'appuyer sur Ctrl C n'importe où, et aucune mauvaise chose ne se produira (par exemple dans chaque éditeur de texte ou traitement de texte, c'est la norme de facto pour "copie").
cependant, quand vous exécutez un programme dans le shell , alors vos touches vont vraiment dans la coque, pas dans votre programme. Le shell acheminera (presque) tout vers le stdin de votre programme, et acheminera tout ce qui vient de stdout vers le terminal ou un autre processus ou un fichier (si vous avez utilisé un tuyau ou une redirection).
si l'interpréteur de commandes voit que vous appuyez sur Ctrl" 151930920 C , alors l'interpréteur de commandes envoie le signal d'interruption . Mais c'est juste quelque chose que la coquille fait, pas quelque chose qui ça arrive par magie à cause de la combinaison de clés.
environ Ctrl" 151930920 X , vous vouliez probablement dire Ctrl "151930920 Z . Cela stoppe un processus, et le shell affiche un nombre que vous pouvez utiliser avec fg
pour le faire fonctionner à nouveau.
le terminal attribue un sens particulier à certaines séquences de clés. Cela inclut la suppression d'un caractère, la suppression au début de la ligne ( Ctrl U ), ...
spécifiquement, lorsque le terminal ISIG
mode local est activé:
-
VINTR
(habituellement Ctrl C ) génère unSIGINT
(interrompu par l'utilisateur). -
VQUIT
(habituellement Ctrl \ ) génère unSIGQUIT
(comme SIGINT, mais aussi dump core). -
VSUSP
(habituellement Ctrl Z ) génère unSIGTSTP
(arrêt par le terminal I/O). -
VDSUSP
(sur certains systèmes, pas sur Linux) génère unSIGTSTP
lorsque le programme essaie de le lire.
les éléments ci-dessus sont configurables. Ceci est documenté sur la page de manuel termios(3) .
De Wikipedia
Ctrl x Ctrl e : modifie la ligne courante dans le programme $EDITOR, ou vi si undefined.
Ctrl x Ctrl r : Lire le contenu du fichier inputrc, et incorporez les fixations ou les assignations variables qui s'y trouvent.
Ctrl x Ctrl u : incrémental undo, séparément rappelé pour chaque ligne.
Ctrl x Ctrl v : informations sur la version D'affichage de l'instance courante de bash.
Ctrl x Ctrl x : Alterne le curseur avec son ancienne position. (C-x, parce que x a une forme de croisement).
une autre utilisation de Ctrl x est d'étendre le *
en tapant une commande dans le shell.
Dites-vous:
$ ls *
en Appuyant sur Ctrl x puis * permettra d'élargir *
à tous les éléments dans le répertoire courant à quelque chose comme ceci:
$ ls dir1 dir2 file1 file2 file3`
vous pouvez également vous référer à cette rubrique sur SuperUser pour l'usage que j'ai décrit ci-dessus.
sur Linux/Unix il y a des signaux. Le Ctrl + C (
SIGINT
) est une évidence pour moi...
si vous avez besoin d'une liste de signaux disponibles sur votre système, alors signum.h
peut être utile. Ci-dessous provient de 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 ())