Red de conocimientos turísticos - Información de alquiler - Algunos conocimientos de programación sobre Linux (1) Escriba un programa pequeño y use fork(), vfork o clone() para crear procesos secundarios. (2) Compare sus condiciones de operación.

Algunos conocimientos de programación sobre Linux (1) Escriba un programa pequeño y use fork(), vfork o clone() para crear procesos secundarios. (2) Compare sus condiciones de operación.

No entiendo muy bien de qué estás hablando, pero tengo un código aquí para tu referencia:

Crea un nuevo proceso forkdemo1.c:

/* forkdemo1.c

* Muestra cómo fork crea dos procesos que se pueden distinguir

* Muestra cómo fork crea dos procesos que se pueden distinguir

* Muestra cómo fork crea dos procesos que se puede distinguir

* Muestra cómo fork crea dos procesos, que se pueden distinguir

* Muestra cómo fork crea dos procesos, que se pueden distinguir

* Mostrar Cómo fork crea dos procesos. Se puede distinguir por los diferentes valores de retorno de fork()

*

*/

#include lt; p>

main()

{

int ret_from_fork, mypid;

mypid = getpid() /* ¿Quién soy? */

printf("Antes: mi pid es d\n", mypid); /* díselo al mundo */

ret_from_ fork = fork();

sleep(1);

printf("Después: mi pid es d, fork() dijo d\n",

getpid(), ret_from_fork

p> p>

}

Proceso de creación de procesos secundarios forkdemo2.c:

/* forkdemo2.c: muestra cómo el proceso secundario regresa de fork()

* y ejecutar cualquier código que quieran,

* incluso fork(). Predice el número de filas de salida.

*/

main()

{

printf("mi pid es d\n", getpid() );

bifurcación();

bifurcación();

bifurcación();

de bifurcación(); p>from fork();c:

/* forkdemo3.c - muestra cómo el valor de retorno de fork()

* permite que el proceso determine

* ¿Es un subproceso o un proceso?

*/

#include lt;stdio.hgt;

main()

{

int fork_rv;

printf("Antes: mi pid es d\n", getpid()); *Crear nuevo proceso*/

if ( fork_rv == -1 ) /*Comprobar errores*/

perror("fork");

else if ( fork_rv = = 0 )

printf("Yo soy el niño.my pid=d\n", getpid()); el padre. mi hijo es d\n", fork_rv);

}

El padre espera hasta que el niño termine

waitdemo.c:

/ * waitdemo.c: muestra cómo el proceso principal se pausa hasta que se completa el proceso secundario

*/

#include lt;stdio.hgt;

#define DEMORA 2

main()

{

int newpid;

void child_code(), parent_code();

printf("antes: mypid es d\n", getpid());

if ( (newpid = fork()) == -1 )

perror("fork" );

else if ( newpid == 0 )

child_code(DELAY);

else

parent_code; (newpid);

}

/*

* El nuevo proceso se queda dormido y sale

*/

void child_code(int retraso)

{

printf("niño d aquí.dormirá durante d segundos\n", getpid(), retraso);

dormir(retraso) ;

printf("niño hecho.a punto de salir\n");

salir(17);

}

}

/*

* El proceso padre espera al proceso hijo y luego imprime la información

*/

void código_padre(int

childpid)

{

int wait_rv; /* valor de retorno de wait()*/

wait_rv = wait(NULL);

printf("he terminado de esperar por d. Espera devuelta: d\n", childpid, wait_rv

}

);