Feststellen ob stdout in eine Pipe geht

OP (Firma: JDCC) #6361152
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
Gast
Joachim D. schrieb:
> isatty( 1) (für stdout)
1
isatty( fileno(stdout ) )

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.
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.
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

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.