Digamos que tengo el siguiente código: int main (int argc, char * argv []) {pid_t pid = fork (); if (pid> 0) {execv (* argv, argv); } int estado = 0; esperar (& estado); ...

0
JavaDumbell 15 mar. 2021 a las 08:43

1 respuesta

La mejor respuesta

Devolverá -1 y establecerá errno en ECHILD ya que el proceso hijo no tiene hijos propios en los que esperar. Desde la página de manual de wait (2):

Valor de retorno

  • wait(): en caso de éxito, devuelve el ID de proceso de la terminación niño; en caso de error, se devuelve -1.

  • ...

Cada una de estas llamadas establece errno en un valor apropiado en caso de error.

Errores

  • ECHILD (para wait())
    El proceso de llamada no tiene hijos no esperados.

  • ...


Tenga en cuenta que la lógica aquí está al revés de la norma:

if (pid > 0) {
    execv(*argv, argv); 
}

Aquí el proceso padre llama a execv(). Por lo general, es el hijo el que lo hace cuando pid == 0, y es el padre el que espera.

2
John Kugelman 15 mar. 2021 a las 05:51