Quando uno stream stdio
incontra un errore (ma non EOF), l'indicatore di errore del flusso verrà impostato in modo che ferror()
restituisca valori diversi da zero. Ho sempre dato per scontato che ulteriori informazioni siano disponibili in errno
. Ma come faccio a saperlo?Lo stdio imposta sempre errno?
Documentazione per alcune funzioni [ad es. man fopen
sotto Linux] dice che verrà impostato anche errno
. Tuttavia man fgets
non menziona errno
affatto. Le pagine informative glibc sono rassicuranti:
Oltre a impostare l'indicatore di errore associato al flusso , le funzioni che operano sui flussi fissati anche `errno' nello stesso modo le corrispondenti funzioni di basso livello che operare sui file descrittori.
Ma non ho idea di quanto sia forte questa garanzia. È richiesto dallo standard C? Cosa succede in Visual C/C++?
Grazie. Le definizioni POSIX sono molto utili. Ad esempio, in base a loro, "fgets" ha effettivamente impostato errno.Penso che la migliore strategia per il mio caso specifico sia scrivere solo per POSIX e quindi correggere i problemi di Windows non appena si presentano. –