2009-01-16 16 views

Respuesta

34

Si su biblioteca estándar es multithread consciente, entonces probablemente tiene un #define que cambia errno en una llamada a función que devuelve 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 Thread-safety and POSIX.1 que responde a esta pregunta.

+0

Gracias! Una comprobación rápida en /usr/include/bits/errno.h confirmó que errno está definido para ser por subproceso cuando se usan subprocesos, en mi máquina Ubundu. –

16

man errno dice:

errno se define por la norma ISO C ser un lvalue modificable de tipo int, y no debe ser explícitamente declarado; errno puede ser una macro. errno es thread-local; establecerlo en un único subproceso no afecta a su valor en cualquier otro hilo.

Cuestiones relacionadas