Tenedor en Bash
Este artículo presenta un tutorial introductorio sobre un equivalente de Bash (es decir, subcapas) para la llamada al sistema bifurcación
de C/C++ para bifurcar nuevos procesos secundarios asíncronos.
Tenedor en Bash
La llamada al sistema en C/C++ es para crear un nuevo proceso, es decir, el proceso secundario del proceso de llamada. Después de la creación del nuevo proceso, ambos procesos se ejecutarán de forma asíncrona.
Ambos tienen su propio espacio de direcciones. Ninguno de los procesos esperará a que el otro proceso finalice antes de que finalice su ejecución; sin embargo, en Bash, estos procesos secundarios se conocen como subcapas.
Estas subcapas se ejecutan en paralelo, lo que permite realizar múltiples tareas simultáneamente. Por lo tanto, la funcionalidad de “bifurcación” en Bash se puede lograr creando nuevas subcapas.
Para crear una subcapa, seguimos la siguiente sintaxis:
(sub_process) &
Encerramos la función o cualquier línea de código que se ejecutará como un subproceso entre paréntesis y luego ponemos un signo de y comercial &
. Todas las declaraciones dentro de estos paréntesis formarán un subproceso y se ejecutarán como una subcapa.
Considere el siguiente ejemplo:
En este ejemplo, hemos creado la función child_process()
y hemos escrito algunas declaraciones. Más tarde, llamamos a esa función encerrándola entre paréntesis y colocando un &
al final.
Por esto, la función será llamada en una subcapa. El shell principal ejecutará sus próximas declaraciones al mismo tiempo.
Podemos ver en la salida que el proceso principal (ya que se estaba ejecutando simultáneamente) imprimió su siguiente declaración antes de que el hijo pudiera acercarse a su declaración de print
.
Variables en subcapas
En lo que respecta a las variables, todos los shells, ya sean shell principal o subshell, tendrán sus variables. Dado que ambos tienen su propio espacio de direcciones, el proceso eventualmente tendrá variables locales separadas.
Veamos el siguiente ejemplo:
En este script, creamos una variable local_var
en el proceso principal y establecimos su valor. Más adelante en la función child_process
, le asignamos un nuevo valor para la subcapa.
Después de crear un proceso hijo, el proceso padre imprime el valor de la variable, por lo que se imprimirá el valor del padre.
La salida será la siguiente:
Podemos ver en el resultado anterior que las variables locales no son accesibles fuera del bloque de código del proceso secundario. Incluso el proceso principal no puede acceder al valor establecido por el proceso secundario.