GNU/Linux >> LINUX-Kenntnisse >  >> Linux

UNIX / Linux:3 Möglichkeiten, Signale an Prozesse zu senden

Frage :Wie sende ich ein Signal an einen anderen Prozess? Können Sie mir alle verfügbaren Optionen erklären, um Signale an einen Prozess in einer UNIX-/Linux-Umgebung zu senden?

Antwort :Sie können mit einer der in diesem Artikel erläuterten Methoden verschiedene Signale an Prozesse senden.

1. Senden Sie mit Kill ein Signal an einen Prozess

Verwenden Sie den Befehl kill, um ein Signal an einen Prozess zu senden. Wenn Sie beispielsweise das USR1-Signal an den Prozess „a.out“ senden möchten, gehen Sie wie folgt vor.

$ ps -C a.out
  PID TTY          TIME CMD
 3699 pts/1    00:00:00 a.out

$ kill -s USR1 3699

Hinweis :Siehe 4 Möglichkeiten, einen Prozess zu beenden – kill, killall, pkill, xkill.

2. Signal von einem anderen Prozess an einen Prozess senden

Sie können den UNIX-Systemaufruf kill (aus einem C-Programm) verwenden, um Signale von einem Prozess zu einem anderen zu senden. Das folgende C-Code-Snippet zeigt, wie der Kill-Befehl verwendet wird.

Der Kill-Systemaufruf benötigt zwei Argumente:1) die PID (Prozess-ID) des zu signalisierenden Prozesses 2) das Signal, das an den Prozess gesendet werden muss. Der Kill-Befehl gibt 0 zurück, wenn er erfolgreich ist.

int send_signal (int pid)
{
        int ret;
        ret = kill(pid,SIGHUP);
        printf("ret : %d",ret);

}

3. Signal von der Tastatur an einen Prozess senden

Wenn ein Prozess auf dem Terminal ausgeführt wird, können Sie über die Tastatur ein Signal an diesen Prozess senden, indem Sie eine bestimmte Tastenkombination verwenden. Im Folgenden finden Sie einige Beispiele.

  • SIGINT (Strg + C) – Das wissen Sie bereits. Durch Drücken von Strg + C wird der laufende Vordergrundprozess beendet. Dies sendet das SIGINT an den Prozess, um ihn zu beenden.
  • Sie können ein SIGQUIT-Signal an einen Prozess senden, indem Sie Strg + \ oder Strg + Y drücken

Sie können die Tastenzuordnungen anzeigen, die ein bestimmtes Signal an einen Prozess senden, indem Sie den Befehl „stty -a“ wie unten gezeigt verwenden.

$ stty -a | grep intr
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;

Linux
  1. 30 Übungen zu Linux-Prozessen für Systemadministratoren

  2. Linux – Init-Prozess:Urahn aller Prozesse?

  3. Grundlagen zu Linux-Signalen – Teil I

  4. UNIX-/Linux-Prozesse:C fork()-Funktion

  5. UNIX/Linux-Signalverarbeitung:SIGEV_THREAD

5 schnelle Möglichkeiten, einen Prozess in Linux zu beenden

Prozessüberwachung unter Linux

Linux gegen Unix

Befehle für das Prozessmanagement in Linux

So senden Sie Prozesse unter Linux an den Hintergrund

Was ist ein gestoppter Prozess unter Linux?