fork
-
Eine frage zum erstellen eines Prozesses mit fork()
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/fcntl.h> #include <unistd.h> void start_daemon(void) { chdir("/"); setsid(); close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); open("/dev/null", O_RDWR); dup(STDIN_FILENO); dup(STDIN_FILENO); while(1) sleep(100); } int main(int argc, char *argv[]) { pid_t pid; if ((pid = fork()) < 0) { perror("fork() failed"); return 1; } if (pid == 0) start_daemon(); printf("Child has PID %i.\n", pid); return 0; }
Was ich nicht verstehe ist folgendes:
also durchif pid = fork
wird getestet ob fork -1 zurückliefert -> fehler
aber pid wird zu 0 deshalb wird starte_daemon ausgeführt
doch wie wird die Prozess ID dann richtig ausgegebenprintf("Child has PID %i.\n", pid);
Ich dachte pid = 0 ?
Wieso nimmt sie plötzlich die Prozess ID an?Danke
-
Die Stelle wird nur vom Vater Prozess erreicht.
fork()<0 -> Fehler
fork()==0 -> Kind-Prozess (neu erzeugt durch fork)
fork()>0 -> Vater-Prozess (ürsprunglich gestarteter Prozess)
-
Ah Danke