ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
247
247
EMPFEHLEN
-
Hallo zusammen,
ich bräuchte einmal Eure Hilfe. Ich verstehe so einige Zeilen Code in einem Programm nicht.
Hier erst einmal der Code:
Code c:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
//Socket wird generiert etc ......... (void) signal(SIGCHLD, reaper); while (1) { client_len = sizeof(client_addr); newsockfd = accept(sockfd, &client_addr, &client_len); //Verbindung akzeptieren, ist eine Blocking Call if (newsockfd < 0) { perror("accept"); exit(1); } pid = fork(); //erstellt einen Child-Prozess. //returns 0, we are in the child process. //returns a positive number, we are in the parent process (the fork return value is the PID of the newly created child process). if (pid == 0) { close(0); //close stdin ****? close(1); close(2); dup(newsockfd); dup(newsockfd); dup(newsockfd); close(newsockfd); //testfunktion(); fflush(stdout); close(0); close(1); close(2); exit(0); } close(newsockfd); } .....
Meine erste Frage, wozu wird die signal() Funktion benötigt.
Danach springt das Programm in die While-Schleife und wartet auf eine eingehende Verbindung und akzeptiert diese. Dann wird ein Child-Prozess mit fork() erstellt, damit der Parent-Prozess nicht blockiert und weitere Anfragen entgegen nehmen kann.
In dem Child-Process wird nun in die if-Bedingung gesprungen.
Was nun dort mit den close() und dup() gemeint ist, weiß ich nicht und müsste mir einer erklären.
Gruß
Krikus
-
02.12.11 07:51 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Mit signal kann man auf Signale reagieren, es wird dann die gegebene Funktion aufgerufen.
Ja, die close aufrufen schließen stdin, stdout und stderr (welche vom Eltenprozeß geerbt wurden).
Die dup aufrufen setzen stdin, stdout und stderr auf eine Kopie von newsockfd.
Also wird z.B. bei printf nicht auf die Konsole (normale Standardausgabe) geschrieben, sondern auf den Socket.
Das steht doch aber alles in den Manpages...
Warum suchst du denn nicht mal?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
[C#] Abfangen des Close-Events (Close-Message) eines fremden Fensters
Von ralfz78 im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 03.03.11, 17:09 -
Close
Von TheLamer im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 25.10.05, 15:50 -
self.close
Von corsanostra im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 15.05.03, 17:40 -
self.close();
Von phpinfo im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 20.04.03, 16:04 -
close()
Von TaJ im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 02.08.02, 00:20





Zitieren
Login






