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
Joachim D. schrieb: > Ich weiß noch nicht mal was ich Google da fragen könnte ;) Stichwort "redirection": _isatty() bzw. isatty() leo
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 :)
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.