gpt4 book ai didi

c - 标准输入/标准输出重定向,输入不起作用

转载 作者:行者123 更新时间:2023-11-30 16:00:18 25 4
gpt4 key购买 nike

我正在尝试在命令行 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”的响应。

我做错了什么?

最佳答案

您正在陷入 redirecting both stdin and stout but processing them serially 的陷阱.

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

编辑:更新了文章的链接: https://devblogs.microsoft.com/oldnewthing/20110707-00/?p=10223

关于c - 标准输入/标准输出重定向,输入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com