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
#6361166
Joachim D. schrieb: > Ich weiß noch nicht mal was ich Google da fragen könnte ;) Stichwort "redirection": _isatty() bzw. isatty() leo
Gast
#6361182
Der Posix Standard sieht hierfür die Funktion istty. Microsoft kennt die auch siehe Hier (wo auch gleich dein Fall als Beispiel erklärt wird) https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/isatty?view=vs-2019
isatty( 1) (für stdout) ergibt 0 oder 1. Das hatte ich gesucht, Vielen Dank :)
Gast
#6361247
Joachim D. schrieb: > isatty( 1) (für stdout)
1 | |
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 | |
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.
Ralf D. schrieb: > Aber Verwendung der Konstanten ist natürlich trotzdem der sauberere Weg. Du meinst Verwendung der Funktion. (also fileno()).
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 ...
Ralf D. schrieb: > Nein, die Konstanten. Die Filenos der Standard-Deskriptoren sind > Konstanten: > STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO Ach die meintest du. Ich hab in solchen Fällen bisher immer einfach 0, 1 und 2 verwendet, aber du hast schon recht. Sprechende Bezeichner sind besser.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.