Hi Bastien, > according to > https://docs.microsoft.com/fr-fr/cpp/c-runtime-library/reference/fileno?view=vs-2019 > > If stdout or stderr is not associated with an output stream (for > example, in a Windows application without a console window), the file > descriptor returned is -2. In previous versions, the file descriptor > returned was -1. This change allows applications to distinguish this > condition from an error.
Indeed, that's a deviation from POSIX [1]. > This should be mentionned in the doc: > A work arround is to create a console at the beginning of the program > and close the window. > > if(AllocConsole()) > { > freopen ("CONOUT$", "w", stdout); > freopen ("CONOUT$", "w", stderr); > ShowWindow (FindWindowA ("ConsoleWindowClass", NULL), false); > } The programs for which gnulib is most often used (coreutils etc.) don't deal with consoles and windows directly; they just use stdout, stderr as they are. So the workaround would have to be in a 'fileno' module. Would you like to contribute such a 'fileno' module? Bruno [1] https://pubs.opengroup.org/onlinepubs/9699919799/functions/fileno.html