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


Reply via email to