PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wait mit Parameter status



lokicall
15-04-2007, 10:11
Hallo,

für mein Uni-Praktikum Betriebssysteme Unix/Linux soll ich folgenden Code an ein Unix System( welches mir noch unbekannt ist ) eingeben:

main() {
int pid; /* Prozessidentifikator */

printf(“Test fork()-Ruf\n\n“);
printf(“Ausgabe1\n“);
pid = fork(); /*fork()-Ruf */
printf(“Ausgabe2\n“);
if (pid == 0) { /* Kinderprozess */
printf(“Kinderprozess\n“);
M: ; /* Endlosschleife */
goto M;
}
else { /* Elternprozess */
printf(“Elternprozess \n“);
printf(“Prozess-Nr. des Kindes: %d\n“, pid);
wait(); /* wait()-Systemaufruf */
printf(“Ausgabe nach wait()\n“);
}
}

In der Aufgabenstellung steht:

Untersuchen Sie in diesem Zusammenhang, auch, ob der wait()-Systemaufruf bei der vorliegenden UNIX-Variante ohne status-Parameter verwendet werden kann!
Wodurch ist gegebenenfalls zu erkennen, dass der Parameter nicht weggelassen
werden darf?

Hab 3 Unix Bücher gewälzt, Manuals, Internetseiten und darauf keine Antwort gefunden. Ich hab den Code unter Linux und NetBSD laufen gehabt, beide benötigen den Parameter nicht.

Hat jemand eine Idee, wieso wait() mit Parameter?

locus vivendi
15-04-2007, 11:35
Ob das Argument weggelassen werden darf, erfährt man durch Lesen der Handbücher.


Ich hab den Code unter Linux und NetBSD laufen gehabt, beide benötigen den Parameter nicht.
Für NetBSD weiß ich es nicht. Aber GNU/Linux, d.h. Linux in Verbindung mit der Glibc benötigen das Argument. Wie kommst du darauf das er weggelassen werden kann? Tip: Du kannst das nicht dadurch herausfinden, dass du das Programm durch den Compiler jagst, und schaust ob der meckert. Ihr habt nämlich Schrott-Code bekommen dessen Verhalten auf Unix unter Umständen überhaupt nicht definiert ist. Die Abwesenheit von Fehlermeldungen bedeutet deshalb noch lange nicht Fehlerfreiheit.

lokicall
15-04-2007, 12:53
Der Status Parameter ist nur für die Auswertung des Kindprozesses da( wie dieser beendet wurde ).
Wenn ich aber diesen nicht benötige, wie in den Programm oben, könnte man ihn auch weglassen.

Ich benötige auch nur eine Begründung, wieso man das hier nicht weglassen darf. Das der Parameter hier verlangt wird, deutet die Fragestellung ja an.

Der Prof. erwartet ja keine Hellseherfähigkeiten von seinen Studenten für die Lösung dieser Aufgabe. Irgendwo muss doch beschrieben sein, wieso dieses *Unix den Parameter verlangt.

locus vivendi
15-04-2007, 13:41
Irgendwo muss doch beschrieben sein, wieso dieses *Unix den Parameter verlangt.
Die "Open Group" ist deine Anlaufstelle, als Pflegerin von Unix:
http://www.unix.org