Stdin / Stdout перенаправление, вход не работает - PullRequest
0 голосов
/ 23 октября 2011

Я пытаюсь создать канал между оболочкой командной строки и моим приложением.

Это мой код: http://pastebin.com/uupd4aXi

То, что я пытаюсь сделать, этонапишите "whoami" в stdin и получите эквивалент, эквивалентный этой команде.Если я закомментирую функцию writeinput, readoutput успешно напечатает стандартную распечатку cmd.Однако, если я этого не сделаю, writeinput застревает в бесконечном цикле по адресу:

for (;;) 
    { 

        bSuccess = WriteFile(hSTD_IN_WRITE, chBuf, sizeof(chBuf), &dwWritten, NULL);
        if ( ! bSuccess ) break; 
    } 

Если я удаляю оператор if и вручную вызываю разрыв в цикле, я все еще получаю только сообщение распечатки cmd, ноне ответ на мою команду "whoami".

Что я делаю не так?

1 Ответ

1 голос
/ 23 октября 2011

Вы попадаете в ловушку , перенаправляющую как stdin, так и stout, но обрабатывающую их последовательно .

Если все, что вы хотите сделать, это запустить программу whoami и захватить вывод, то вам не нужно cmd.exe и попробуйте ввести whoami.exe в качестве его ввода. Просто запустите whoami.exe напрямую и запишите его вывод.

...