Здравствуйте, s_viy, Вы писали:
_>Обычно перенаправление ввода-вывода производиться при запуске процесса. В Win32 — это CreateProcess. При вызове можно указать дескрипторы для stdin stdout и stderr. HANDLE используется любой, но я обычно использую неименованые каналы (pipes) см. CreatePipe
Спасибо, посмотрел каналы, разобрался, но цели так и не добился. Если Вас не затруднит, разъясните, пожайлуста следующие моменты.
1. Допустим, я создал трубу. Хендлы назвал h_read и h_end. Какие мне надо ставть SECURITY_ATTRIBUTES, и что это такое?
2. Я написал:
SetStdHandle(STD_OUTPUT_HANDLE, h_write);
Означает ли это, что теперь весь стандартный вывод будет идти по этой трубе?
3. Я написал
std::cout << "Hello!";
Означает ли это, что я направил "Hello" в стандартный вывод?
4. Допустим, для варианта с CreateProcess все ясно. Но теперь я пишу
system("dir");
Как заставить вывод этой комманды идти не в консоль (которая сразу создается и пропадает), а идти в мою трубу. Когда я делал консоль сам (AllocConsole()), все порожденные процессы писали в мою консоль, как заставить их не создавать свою консоль, а писать в мою трубу?
Буду очень благодарен за ответы.