bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: On recent windows fileno return -2 in case of closed stdin, stdout,


From: Bruno Haible
Subject: Re: On recent windows fileno return -2 in case of closed stdin, stdout, stderr
Date: Mon, 06 Apr 2020 20:32:32 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-174-generic; KDE/5.18.0; x86_64; ; )

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

[Prev in Thread] Current Thread [Next in Thread]