0
我试图在命令行shell和我的应用程序之间创建一个管道。标准输入/输出重定向,输入不工作
这是我到目前为止的代码: http://pastebin.com/uupd4aXi
我所试图做的是写“WHOAMI”到标准输入和获得回报等同于命令。 如果我注释掉writeInput函数,readoutput将成功打印标准cmd打印输出。但是,如果我不这样做,writeinput卡住在一个无限循环的:
for (;;)
{
bSuccess = WriteFile(hSTD_IN_WRITE, chBuf, sizeof(chBuf), &dwWritten, NULL);
if (! bSuccess) break;
}
如果我删除if语句和手动造成环路休息,我仍然只得到CMD打印输出消息,但不响应我的命令“whoami”。
我在做什么错?
感谢您的回应,但不幸的是,命令“whoami”只是一个例子,所以我不能只运行whoami.exe,如果我想让“回声1”的结果可以说会发生什么。那篇文章是使用缓冲,但是,我不完全明白这是什么意思,你能帮我一下吗? –
'cmd.exe/c echo 1'会运行命令,而不需要你通过stdin输入数据。它也摆脱了旗帜,所以一石二鸟。 –
谢谢!终于搞定了。虽然这在我看来似乎是一种解决方法,但它确实能完成这项工作。我会很好奇,但要找到“正确”的方法 –