Pregunta

Después de un proceso tenedores y el hijo invoca bifurcada execv, es el resultado sigue siendo el hijo de su padre?

¿Fue útil?

Solución

tenedor crea un nuevo proceso llamado el hijo de la PADRES ..... sustituye exec el programa en ejecución actual con el proceso de exec'd y por lo tanto sigue siendo el proceso hijo del padre ...

Otros consejos

Sí. execv no crea un nuevo proceso - es por eso que necesita para primera horquilla

.

Si lo es. También la terminología "familia proceso" es incómodamente cerca "grupo de procesos", que es un concepto bastante importante.

Usted está en el camino correcto. Básicamente, el tenedor (2) llamada al sistema en la vieja UNIX crea una copia del proceso que se bifurcó, con un nuevo PID y una nueva pila de procesos, copiar el espacio de memoria para hacerlo. El exec cargas del proceso existente con una nueva imagen. Se puede ver una versión de que en la operación exec en la mayoría de las cáscaras -. Uns que la imagen deseada en el proceso que fue ocupado por el shell

Cuando se bifurca un proceso, la llamada al sistema devuelve el PID tenedor del nuevo proceso, si usted es el padre, o 0 si eres niño. El proceso hijo también hereda todos los descriptores de archivos abiertos, en particular, 0,1, y 2, que se conoce más comúnmente como STDIN, STDOUT y STDERR.

(examen sorpresa:? ¿Cómo se supone una cáscara gestiona redirección, por ejemplo, con >)

Más moderna variantes de UNIX con mayores espacios de direcciones (UNIX original solamente tenía en total 64 K palabras!) IMPLEMENTA variante tenedor llamado vfork que sólo copia el subconjunto necesaria del proceso para empezar a correr, y depende de el administrador de memoria para tirar en el resto si es necesario. Dado que la mayoría de veces tenedor es seguida inmediatamente por ejecutivo, que necesita para cargar una nueva imagen de todos modos, se trata de una optimización significativa.

Mach detiene un paso más allá; cuando se crea un nuevo pprocess, nada se copia a excepción de lo que necesita para un contexto de ejecución; la imagen es exactamente la misma. Copiar sólo ocurre cuando el proceso cambia una ubicación en la memoria, momento en el cual se copia la página que contiene ese lugar. Esto se llama "copia en escritura", y es casi óptima.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top