Stdin / Stdout重定向,输入无效

时间:2011-10-23 07:53:01

标签: c cmd stdout pipe stdin

我正在尝试在命令行shell和我的应用程序之间创建一个管道。

这是我到目前为止的代码: 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 个答案:

答案 0 :(得分:1)

您正在遇到redirecting both stdin and stout but processing them serially的陷阱。

如果您要执行的只是运行whoami程序并捕获输出,那么您不需要cmd.exe并尝试将whoami.exe作为输入。只需直接运行whoami.exe并捕获其输出。