C'è un modo per usare errno in modo sicuro in un'applicazione multi-thread? [duplicare]

StackOverflow https://stackoverflow.com/questions/449778

  •  19-08-2019
  •  | 
  •  

Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              Errno thread-safe?                                      8 risposte                          
  •     
    

Se si sta scrivendo un'applicazione multi-thread che utilizza chiamate di sistema / libreria che utilizzano errno per indicare il tipo di errore, esiste un modo sicuro per usare errno? In caso contrario, esiste un altro modo per indicare il tipo di errore che si è verificato piuttosto che solo un errore?

È stato utile?

Soluzione

Se la tua libreria standard è a conoscenza del multithread, probabilmente ha un #define che cambia errno in una chiamata di funzione che restituisce un valore di ritorno dell'errore locale del thread. Tuttavia, per usarlo in genere devi includere <errno.h>, anziché fare affidamento su una extern dichiarazione.

Ho trovato un articolo Thread-safety e POSIX.1 che affronta proprio questa domanda .

Altri suggerimenti

man errno dice:

  

errno è definito dallo standard ISO C.   essere un valore modificabile di tipo   int e non deve essere esplicitamente   dichiarato; errno può essere una macro. errno   è thread-local; impostandolo in uno   il thread non influisce sul suo valore   in qualsiasi altro thread.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top