zu Februar 01

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

zu Februar 01
Wie gebe ich den Exit-Status bei den Kindern an wenns zu einem Fehler beim Bearbeiten der Verbondung kommt?

if (verbindung_bearbeiten(...) == -1){ printf (".....", WIFEXITSTATUS(status)); }
Aber dann müsste ich ja davor noch beim Kindprozess ein waitpid reinschreiben?

Oder lieg ich ganz falsch?


sorry was willst du :ohr:
irgendwo musst dus schon auflesen >> wo wird den status belegt?
und wtf ist eine Verbondung


und das waitpid kommt net beim kindprozess rein, sondern beim vater… der soll das tote kind ja auflesen

es sei denn das kind hat selber kinder


ist doch klar! wenn du zuviele 007 filme am stück anschaust, dann kommt es zur berüchtigten verbondung. :finger: vorsicht!

jo.


Ne Client-Server verbindung.Und da heißts dann
/* Neuen Prozeß erzeugen und in Jobliste eintragen.

  • Verbindung in diesem Prozeß bearbeiten (durch
  • Aufruf von verbindung_bearbeiten() )
  • Fehler beim Bearbeiten der Verbindung soll der
  • Kindprozeß durch seinen Exit-Status anzeigen.
    */

Also forken und die veschieden Fälle abarbeiten.Im Sohnprozess soll man dann die Funktion verbindung_bearbeiten() aufrufen.Einen etwaigen Fehler dann Anzeigen so wies dasteht.


ok.Hab zu lang zum Schreiben gebraucht.Danke!


Frage:

  1. Ich muss ja den status im SIGCHLD handler ausgeben, → Ich muss das Kind mit irgendeinem Error terminieren lassen.
int ret;
ret = verbindung_bearbeiten...
exit(ret);

Dabei gibt verbindung_bearbeiten halt 0 und -1 zuruek.

  1. Im SIGCHLD Handler darf ich nur den status der kinder ausgeben, die als Error -1 haben:
int status, pid;
while( (pid = waitpid(-1, &status, WNOHANG) > 0){
   if(WEXITSTATUS(status) == -1){
      fprintf(stderr, "Kind %d Status %d", pid, status);
   }
}

Aber damit wuerde er ja alle Kinder auflesen, die status -1 haben, und das koennten ja auch kinder sein, die an was anderm verreckt sind.