Es un simple delay.
¿pero si se quita sigue funcionando el programa igualmente?
Citar
Revisaste los valores de retorno de wait?
RETURN VALUE
The process ID of the child which exited, or zero if WNOHANG was used and no child was available, or -1 on error (in which case errno is set to an appropriate value).
ERRORS
EINTR
if WNOHANG was not set and an unblocked signal or a SIGCHLD was caught.
RETURN VALUE
The process ID of the child which exited, or zero if WNOHANG was used and no child was available, or -1 on error (in which case errno is set to an appropriate value).
ERRORS
EINTR
if WNOHANG was not set and an unblocked signal or a SIGCHLD was caught.
Entiendo los valores de retorno (o eso creo), pero no comprendo que hace exactamente ese codigo ni para que sirve. Me voy a referir a este es que es el que pone habitualmente:
Código:
waitreturn = wait (&status);
while ( (waitreturn !=-1) || (waitreturn == -1 && errno == EINTR))
waitreturn = wait (&status);
while ( (waitreturn !=-1) || (waitreturn == -1 && errno == EINTR))
waitreturn = wait (&status);
Wait retorna el pid del hijo que termine. Luego dice que retorna 0 ¿si no retorna ninguno y ninguno esta disponible? No se que quiere decir eso... y luego -1 si hay error.
¿esta esperando procesos hijos hasta que wait retorne -1 y errno != EINTR? ¿por que?
El otro tampoco lo entiendo... ¿childpid que toma 0 o 1 y lo compara con el wait?
Bueno a ver si puedes aclarar esto
Código:
Por que no le ves sentido? están inicializados de esa forma porque el recurso no puede ser utilizado por mas de un proceso al mismo tiempo. Es un ejemplo básico de la idea de los semáforos de exclusión mutua.
Para mi que no haria falta utilizar el excmut, que ya quedaria garantizada la exclusion mutua con solo el libre y el ocupado
Un saludo!