Hallo zusammen,
ich bräuchte einmal Eure Hilfe. Ich verstehe so einige Zeilen Code in einem Programm nicht.
Hier erst einmal der Code:
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
ich bräuchte einmal Eure Hilfe. Ich verstehe so einige Zeilen Code in einem Programm nicht.
Hier erst einmal der Code:
C:
//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