Supongamos que tenemos un proceso principal y si llama a una función ejecutiva, después de llamar a una bifurcación para crear un proceso secundario.
Ahora, ¿qué sucede con el proceso secundario? ¿Actuará como el proceso principal original, de modo que el usuario no notará la diferencia de que el proceso principal fue reemplazado por algún otro binario?
Creo que esta pregunta difiere de la siguiente pregunta : ¿qué sucede con el proceso secundario? .
if ( (pid == fork ()) != 0 ) { if (strcmp(cmd,"mypwd")==0) { execlp (“mypwd”,0); } ... ... else if (strcmp(cmd,"myexit")==0) exit(1); }El pid del proceso principal seguirá siendo el mismo después del exec , por lo que la jerarquía del proceso no se verá afectada.
El problema con este enfoque es que el proceso principal recién reemplazado generalmente no se dará cuenta de que previamente generó un hijo y no llamará a wait o waitpid en él. Esto hará que el proceso secundario se convierta en un zombi cuando salga.