Опция /u
контролирует поведение интерпретатора команд и не имеет ничего общего с консолью. Этот вопрос, да и некоторые из комментариев к нему, делают классическую ошибку, сделанную много раз ранее, - совмещение консоли с интерпретатором команд , который, как оказалось, один процессов с использованием этой консоли. Интерпретатор команд не является консолью . Опции, позволяющие интерпретатору команд (или любой другой программе) записывать свой вывод определенными способами, не имеют ничего общего с консолью, на которую этот вывод может или не может быть направлен.
Действительно, эти параметры даже не связаны с консолью. Опции /U
и /A
для CMD
переворачивают внутренний переключатель внутри самого интерпретатора команд, который проверяется встроенными командами, такими как DIR
, перед тем как записывать в каналы и в файлы, Состояние переключателя определяет способ записи выходных данных. Можно даже увидеть эту опцию в исходном коде для Reactos CMD
. Переключатель bUnicodeOutput
и проверяется функцией ConWrite()
.
И это, конечно, указывает на то, как это делается в собственной программе для достижения того же эффекта. Каждый дает программным опциям /U
и /A
(или иным именем), соответственно переключает переключатель и изменяет поведение записи своей программы, когда обнаруживает, что записывает в канал или файл. Другими словами: каждый делает именно то, что делает CMD
. И пользователь запускает свою программу, передавая ей параметры /U
и /A
, так же, как они делают, когда используют CMD
.
Другими словами: пример этого механизма уже существует. Просто скопируйте его.