thread - procesos en android
¿Hay alguna forma de utilizar errno de forma segura en una aplicación de subprocesos múltiples? (2)
Si está escribiendo una aplicación de subprocesos múltiples que utiliza llamadas de sistema / biblioteca que utilizan errno para indicar el tipo de error, ¿existe alguna forma segura de utilizar errno? Si no, ¿hay alguna otra manera de indicar el tipo de error que ocurrió en lugar de simplemente que se haya producido un error?
man errno
dice:
errno se define por el estándar ISO C como un valor l modificable de tipo int, y no debe declararse explícitamente; errno puede ser una macro. errno es thread-local; configurarlo en un hilo no afecta su valor en ningún otro hilo.
Si su biblioteca estándar es multithread consciente, entonces probablemente tenga un #define
que cambie errno
en una llamada de función que devuelva un valor de retorno de error local de subproceso. Sin embargo, para usar esto, generalmente debe incluir <errno.h>
, en lugar de confiar en una declaración extern
.
Encontré un artículo Seguridad contra subprocesos y POSIX.1 que aborda esta misma pregunta.