Prozesse beenden
-
Hallo!
Vielleicht könnt ihr mir bei folgendem Problem helfen. Und zwar gehts um die ELSE IF ... Verzweigung. Wie kann ich das testen? Wenn ich den Prozess kille, dann wird ja so zusagen ein Signal mit einer bestimmten Nummer an den Kind-Prozess gesendet. Nur leider schießt sich der Programm dann ganz ab, ohne die ELSE IF ... Verzweigung abzuarbeiten. Kennt einer von euch ne Lösung für dieses Problem??
Danke
Tom// Datei: forkdemo.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #include <iostream> using namespace std; // globale Variablen int i = 10; int status; int main () { // lokale Variablen pid_t pid; cout <<"Beispiel zum Aufruf von fork()" <<endl; // einen neuen Prozess erzeugen pid = fork (); cout <<"\nKind-PID= " <<getpid() <<" Eltern-PID= " <<getppid(); // Fallunterscheidung cout <<"\n"; switch (pid) { // Fehlerfall case -1: fprintf (stderr, "Fehler beim Aufruf von fork().\n"); exit(0); // Kindprozess case 0: cout <<"Child-Prozess für 5 Sekunden schlafen gelegt." <<endl; sleep (5); //cout <<"\nChild-Prozess beendet."; exit(1); // Vaterprozess bzw. pid > 0 default: cout <<"Parent-Prozess für 15 Sekunden schalfen gelegt" <<endl; sleep (15); pid=wait(&status); if(WIFEXITED(status)) { cout <<"\nChild normal beendet...\n"; cout <<"Exit-Code: " <<WEXITSTATUS(status) <<endl; } else if (WIFSIGNALED(status)) { cout <<"Child beendet über ein Signal...\n"; cout <<"Signalnummer die die Beendigung verursacht hat: " <<WTERMSIG(status) <<endl; } exit(2); } }
-
Kommando zurück.
Habe rausgefunden woran es lag.
gruss
Tom