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輸入數據。它也擺脫了旗幟,所以一石二鳥。 –
謝謝!終於搞定了。雖然這在我看來似乎是一種解決方法,但它確實能完成這項工作。我會很好奇,但要找到「正確」的方法 –