Когда я пытаюсь получить дескриптор файла для stderr
с fileno(stderr)
, результат равен -2 вместо 2. Документация для fileno говорит, что это, вероятно, потому что в приложении Windows безКонсольное окно stderr
не связано с выходным потоком.
Мне нужен stderr
дескриптор файла, потому что я бы хотел перенаправить stderr
в канал, используя _dup2 () , так что всезаписанные с fprintf(stderr, "...")
и std::cerr << "..."
будут перенаправлены в канал.
Мой вопрос: возможно ли получить дескриптор файла для stderr
в приложении GUI, где нет консольного окна?Могу ли я как-то открыть дескриптор файла stderr
по умолчанию перед вызовом fileno(stderr)
?
EDIT:
Мне удается заставить его перенаправить fprintf(stderr, "...")
в канал, сначала вызвав freopen("temp.txt", "w",stderr)
, а затем вызвавfileno(stderr)
чтобы получить дескриптор файла, основанный на идее, предложенной @ darune.
Я хочу сделать это, потому что я хотел бы перенаправить данные из внешних библиотек, которые не находятся под моим контролем.