Junior — Middle
Erklären Sie, was Signale im Linux-Betriebssystem sind und wie man mit ihnen arbeitet
sobes.tech KI
Antwort von AI
Unter Linux sind Signale ein Mechanismus für asynchrone Benachrichtigungen von Prozessen über Ereignisse (z.B. Unterbrechung, Beendigung eines Kindprozesses, Timeout).
Wichtige Punkte:
- Signale haben numerische Kennungen (z.B. SIGINT, SIGTERM).
- Ein Prozess kann ein Signal mit einem Signal-Handler behandeln oder ignorieren.
- Wird ein Signal nicht behandelt, wird die Standardaktion ausgeführt (z.B. Prozess beenden).
Beispiel für die Behandlung des SIGINT-Signals (Ctrl+C) in C:
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void handler(int signum) {
printf("Signal %d empfangen, beende...\n", signum);
_exit(0);
}
int main() {
signal(SIGINT, handler);
while(1) {
printf("Arbeiten...\n");
sleep(1);
}
return 0;
}
In der Shell können Signale mit dem Befehl kill und der PID gesendet werden, z.B. kill -SIGTERM 1234.