Re[3]: Как перенаправить стандатртые потоки?
От: Аноним  
Дата: 18.12.05 11:49
Оценка:
А>Спасибо, посмотрел каналы, разобрался, но цели так и не добился. Если Вас не затруднит, разъясните, пожайлуста следующие моменты.
А>1. Допустим, я создал трубу. Хендлы назвал h_read и h_end. Какие мне надо ставть SECURITY_ATTRIBUTES, и что это такое?
А>2. Я написал:
А>
А>SetStdHandle(STD_OUTPUT_HANDLE, h_write);
А>

А>Означает ли это, что теперь весь стандартный вывод будет идти по этой трубе?
А>3. Я написал
А>
А>std::cout << "Hello!";
А>

А>Означает ли это, что я направил "Hello" в стандартный вывод?
А>4. Допустим, для варианта с CreateProcess все ясно. Но теперь я пишу
А>
А>system("dir");
А>

А>Как заставить вывод этой комманды идти не в консоль (которая сразу создается и пропадает), а идти в мою трубу. Когда я делал консоль сам (AllocConsole()), все порожденные процессы писали в мою консоль, как заставить их не создавать свою консоль, а писать в мою трубу?
А>Буду очень благодарен за ответы.

1) SECURITY_ATTRIBUTES ставь NULL
2) Да
3) Да
4) Что Вам мешает использовать CreateProcess для "dir"? Может в вашем случае проще перенаправить потоки средствами коммандной строки посредством разделителья "|". Например: dir *.* | you.exe. В этом случае все данные которые раньше выводились на консоль будут перегаправлены на стандартный ввод you.exe.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.