Herramientas de usuario

Herramientas del sitio


proc_fork

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
proc_fork [2020/03/31 14:34] marianoproc_fork [2020/03/31 14:59] (actual) mariano
Línea 89: Línea 89:
 {{ :el_lenguaje_de_programacion_c.jpg?100 |}} {{ :el_lenguaje_de_programacion_c.jpg?100 |}}
  
 +==== Fork ====
  
 +Los procesos en Linux tienen una estructura jerárquica, es decir, un proceso padre puede crear un nuevo proceso hijo y así sucesivamente. La forma en que un proceso inicia a otro es mediante una llamada a fork o clone.
  
-==== Fork ====+Cuando se hace un fork, se crea un nuevo task_struct a partir del task_struct del proceso padre. Al hijo se le asigna un PID propio y se le copian las variables del proceso padre. Sin embargo, vemos como en la llamada a  clone el task_struct del proceso padre se copia y se deja tal cual, por lo que el hijo tendrá el mismo PID que el proceso padre y obtendrá (físicamente) las mismas variables que el proceso padre. 
 +  
 +El proceso hijo creado es una copia del padre (mismas instrucciones, misma memoria). Lo normal es que a continuación el hijo ejecute una llamada al sistema exec (Nosotros no lo hicimos, no pasa nada o si? 8-o). En cuanto al valor devuelto por el fork, se trata de un valor numérico que depende tanto de si el fork se ha ejecutado correctamente como de si nos encontramos en el proceso padre o en el hijo.  
 + 
 +  * Si se produce algún error en la ejecución del fork, el valor devuelto es -1 
 +  * Si no se produce ningún error y nos encontramos en el proceso hijo, el fork devuelve un 0. 
 +  * Si no se produce ningún error y nos encontramos en el proceso padre, el fork devuelve el PID asignado al proceso hijo. 
 + 
 +A la variable **errno** 8-o ''(La variable global errno se utilizará para obtener el valor de error que se decodificará.)'' se le asigna un código de error determinado cada vez que se produce algún problema. Una llamada a fork (o clone) puede provocar dos tipos de problemas: bien se ha alcanzado el máximo número de procesos, o bien no queda suficiente memoria para crear el nuevo proceso. La siguiente tabla muestra los valores que obtiene la variable errno en función del tipo de error producido. 
 + 
 +^Error         ^Significado  ^  
 +|  EAGAIN  | Se ha llegado al número máximo de procesos del usuario actual o del sistema | 
 +|  EANOMEM  |El kernel no ha podido asignar suficiente memoria para crear un nuevo proceso| 
 + 
 + 
 +---- 
 + 
 +[[so|Volver]] 
 + 
 + --- //[[mariano.vargas@gmail.com|Mariano Vargas]] LOL//
  
-Los procesos en Linux tienen una estructura jerárquica, es decir, un proceso padre puede crear un nuevo proceso hijo y así sucesivamente. La forma en que un proceso arranca a otro es mediante una llamada al fork o clone.+----
  
 +~~NOCACHE~~
 +({{counter|total}})
  
× iphelper toolbox

you see this when javscript or css is not working correct

Untested
IP Address:
First usable:
Subnet:
Last usable:
CIDR:
Amount of usable:
Network address:
Reverse address:
Broadcast address:

proc_fork.1585665273.txt.gz · Última modificación: 2020/03/31 14:34 (editor externo)