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!

41
demandé sur Sumurai8 2011-07-20 19:17:13

5 réponses

pour obtenir toutes les attributions de caractères de contrôle terminal:

stty -a
73
répondu jfg956 2015-05-27 22:29:31

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.

50
répondu Damon 2012-12-27 21:13:01

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 un SIGINT (interrompu par l'utilisateur).
  • VQUIT (habituellement Ctrl \ ) génère un SIGQUIT (comme SIGINT, mais aussi dump core).
  • VSUSP (habituellement Ctrl Z ) génère un SIGTSTP (arrêt par le terminal I/O).
  • VDSUSP (sur certains systèmes, pas sur Linux) génère un SIGTSTP lorsque le programme essaie de le lire.

les éléments ci-dessus sont configurables. Ceci est documenté sur la page de manuel termios(3) .

14
répondu ninjalj 2012-12-27 21:12:03

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.

9
répondu Nobilis 2017-03-20 10:18:21

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 ())
5
répondu jww 2014-02-23 22:18:10