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.
Aufgabe 2 - sister
Hallo zusammen!
Ich hätte ein paar Fragen zur aktuellen Aufgabe sister:
Wenn man feststellt, dass die Option --port angegeben wurde, darf man dann “einfach” den per Kommandozeile übergebenen Wert mit Hilfe von “atoi()” casten oder muss man hier anders vorgehen?
Wie soll man damit umgehen, wenn eine Option öfter als einmal angegeben wird?
Reicht es, “Variante 3: Signalhandler für SIGCHLD auf SIG_IGN setzen” zum Einsammeln von Zombies einmal “zentral” in “initConnectionHandler()” durchzuführen?
Vielen Dank!
Gruß und schönes Wochenende!
Das ist zwar kein Cast, sondern eine Konvertierung, aber ja. [m]atoi(3)[/m] reicht. Du solltest zum Extrahieren natürlich das vorgebene Modul verwenden.
Kannst du ignorieren.
Ja. Das musst du sowieso nur einmal machen.
initRequestHandler
Hallo
Ich habe da noch ein Paar Fragen zu der Aufgabe. Ich habe nicht verstanden was ich im initRequestHandler initialisieren soll. Ich habe ja schon einiges im initConnectionHandler erledigt.
Auch weiß nicht genau wie ich den Inhalt der angeforderten Datei angeben soll.
Ein Paar Tipps wären Hilfreich
Du solltest jeweils nur die Dinge initialisieren, die für das jeweilige Modul relevant sind. Prinzipiell sollten die Module alle austauschbar sein, also darfst du im ConnectionHandler nichts machen, was erst der RequestHandler braucht. In [m]initRequestHandler[/m] könntest du z.B. [m]wwwpath[/m] initialisieren.
Was genau meinst du damit? [m]fopen(3)[/m], [m]fread(3)[/m], [m]fwrite(3)[/m], [m]fclose(3)[/m]?
Programm testen über ssh
Dankeschön soweit
Ich hätte doch noch ein Anliegen. Wie kann ich über ssh den Browser öffnen und das Programm testen.
Den Browser über ssh zu öffnen würde ich nicht empfehlen. Aber warum nicht einfach in einer SSH-Sitzung (z.B. auf der faui06a) die sister starten ([m]./sister --wwwpath=/usr/share/doc/stl-manual/html --port=2014[/m]) und dann mit dem Browser von daheim verbinden? Wäre dann beispielsweise die URL [m]http://faui06a.cs.fau.de:2014/index.html[/m].
oder du verwendest per SSH [m]lynx[/m]. Wer braucht schon ein GUI?
Ist schon mal ein guter Punkt Ich frage mich allerdings woher checkPath weiß was mein „root dir“ des „web dir“ ist? Hab ich da was übersehen?
Das braucht [m]checkPath()[/m] nicht zu wissen - es zählt nur nach, ob der angeforderte Pfad zuviele „…“ enthält.
Seiten laden
Ich habe doch noch ein Anliegen
Ist das normal, dass die Seiten nie mit dem Laden aufhören?
Wenn nein, woran könnte es liegen.
Ich kann die gleiche Seite auch nicht 2 mal öffnen, verschiedene schon.
Das könnte daran liegen, dass der Socket noch offen ist. Daran denken, dass man den zugehörigen Dateideskriptor sowohl im Vater als auch im Kindprozess schließen muss.
Ja jetzt funktioniert alles
Ja tatsächlich habe ich den clientsocket mit fork () dupliziert aber im Vaterprozess nicht geschlossen. …dann hats ewig geladen
Riesen Dank!