Feststellen ob stdout in eine Pipe geht

OP (Firma: JDCC) #6361152
Lesenswert?

Servus,

ich versuche herauszubekommen wie ich in einem Kommandozeilenprogramm
feststellen kann ob die Konsolenausgabe in eine Datei läuft:

zB Programm.exe >ausgabe.txt

getcmd() liefert mir nur den Ausruf bis zum '>'.

Warcon C 1.9
Win 10

Ich weiß noch nicht mal was ich Google da fragen könnte ;)

Grüße Joe
#6364428
Lesenswert?

Imonbln schrieb:
> Joachim D. schrieb:
>> isatty( 1) (für stdout)
>
>
1
> isatty( fileno(stdout ) )
2
>
>
> Wäre durch den POSIX und C Standard abgedeckt und daher der Annahme das
> stdout den Filedescriptor 1 hat vorzuziehen. Auch wenn ich zugeben muss
> das es de facto immer so ist, dass die Annahme 1 == stdout zutrifft.

Nicht nur de facto, sondern auch de jure. ;-)
https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html

Die FDs 0, 1 und 2 sind laut POSIX fix auf stdin, stdout und stderr 
festgelegt. Aber Verwendung der Konstanten ist natürlich trotzdem der 
sauberere Weg.
#6367237
Lesenswert?

Rolf M. schrieb:
> Ralf D. schrieb:
>> Aber Verwendung der Konstanten ist natürlich trotzdem der sauberere Weg.
>
> Du meinst Verwendung der Funktion. (also fileno()).

Nein, die Konstanten. Die Filenos der Standard-Deskriptoren sind 
Konstanten:
  STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO

Da braucht man keine Funktionsaufrufe, die eh nichts anderes 
zurückliefern können/dürfen. Ausser natürlich man möchte da Assertions 
ergänzen ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren