Fork crea un nuevo proceso. El proceso recién creado es un proceso secundario. Es una copia del código posterior del proceso principal. Generalmente se usa como un servidor multiproceso.
Utilice getpid para determinar si el proceso actual es un proceso hijo o un proceso padre.
Considere el siguiente ejemplo:
El siguiente es el contenido citado:
#incluir <sys/types.h> #incluir <unistd.h> #incluir <stdio.h> int principal() { pid_t pid; estático int n = 0; printf("¡bifurcación!n"); cambiar (pid = bifurcación()) { caso-1: { /* ..pid.-1.fork.... */ /* ....... */ /*.......*/ perror("¡La bifurcación falló!"); romper; } caso 0: { /* pid.0.... */ printf("[niño]¡Soy un niño!n"); printf("[niño]getpid=[%d]n", getpid() ); printf("[niño]pid=[%d]n", pid); romper; } por defecto: { /* pid..0.... */ printf("[padre]¡soy padre!n"); printf("[padre]getpid=[%d]n",getpid() ); printf("[padre]pid=[%d]n",pid); romper; } } printf("n=[%d]n", n++); devolver 0; } |
Este ejemplo está compilado con gcc en Linux y los resultados de la ejecución son los siguientes:
El siguiente es el contenido citado:
¡tenedor! [niño] ¡soy un niño! [niño]getpid=[7422] [niño]pid=[0] norte=[0] [padre] ¡soy padre! [padre]getpid=[7421] [padre]pid=[7422] norte=[0] |