“Conocimiento Sistemas>unix

¿Cuándo devuelve una llamada a ejecutiva en UNIX?

2015/10/9
En Unix, una llamada a `exec` nunca devuelve Si tiene éxito. He aquí por qué:

* Reemplazo, no ejecución: `Exec` no * ejecuta * un nuevo programa en el sentido tradicional. * Reemplaza * la imagen del proceso actual con la imagen del nuevo programa. Esto significa que el proceso original esencialmente desaparece, y el nuevo programa toma su lugar.

* Transferencia de control directo: La llamada del sistema `Exec` transfiere directamente el control al nuevo programa sin volver a la persona que llama. Es como si el proceso original estuviera "intercambiado" por el nuevo.

Ejemplo:

`` `C

#Include

int main () {

// Intenta reemplazar el proceso actual con "LS -L"

if (execlp ("ls", "ls", "-l", null) ==-1) {

// solo alcanza esto si EXECLP falla

Perror ("EXECLP falló");

regresar 1;

}

// Esta línea nunca será alcanzada

printf ("Esto nunca se imprimirá. \ n");

regresar 0;

}

`` `` ``

Por qué `Exec` es útil

* Eficiencia: Evita la sobrecarga de crear un nuevo proceso y administrar su espacio de memoria.

* Control directo: Proporciona un mecanismo para que un proceso haga una transición sin problemas a otro programa.

Puntos clave

* `Exec` variantes (` execl`, `execv`,` execlp`, `execvp`) todos tienen el mismo comportamiento en términos de valores de retorno.

* Si `Exec` falla (por ejemplo, archivo no encontrado, problemas de permiso), devuelve` -1` y establece `errno` para indicar el error.

* Para que un programa ejecute otro y luego continúe, debe usar `Fork` para crear un proceso infantil antes de llamar a` exec` en el niño.

¡Avíseme si tiene alguna otra pregunta sobre `ejecutivo 'o procesos en UNIX!

unix
¿Identificar las funciones básicas realizadas por una interfaz de usuario o shell?
¿Qué hace el comando en Linux?
Estructura del sistema operativo Unix
¿Cuál es la función de en Unix?
Definición de un sistema operativo Unix
Cómo dejar de Unix servicios de impresión
¿Los comandos de Linux ingresados ​​a través de la línea de comandos distinguen entre mayúsculas y minúsculas?
¿Cómo funciona la estructura de directorios de Linux?
Conocimiento de la computadora © http://www.ordenador.online