Мы все знаем, что есть два способа перенаправления стандартного вывода.Как узнать, где находится stdout в C++
Во-первых, мы можем использовать freopen_s для перенаправления stdout и stderr в файл.
Во-вторых, мы можем перенаправить стандартный вывод и стандартный поток ошибок, когда мы называем исполняемый файл, как это: xxx.exe> log.txt 2> & 1.
Так что моя проблема заключается в том, как я могу знать, где стандартный вывод и stderr перенаправлен.
Я встретил эту проблему в своей программе в такой ситуации: Если пользователь перенаправил стандартный вывод вторым способом, я должен перенаправить его на «CON» и напечатать несколько журналов на консоли. Если пользователь не перенаправил его, я не должен печатать эти журналы на консоли.
Это связано с тем, что если пользователь не перенаправил его, эти журналы уже были напечатаны на консоли.
Это выглядит как неудобное требование. Я бы вообще этого не избежал. – Amit
Это кажется немного отсталым. Если пользователь перенаправляет ваш вывод специально, печать на консоль в любом случае, вероятно, не та, что пользователь хочет? – melak47
В общем, это невозможно. Кроме того, это уже было задано, возможно, есть возможность получить НЕУСТОЙНУЮ информацию о вашем потоке вывода, в зависимости от операционной системы –