gpt4 book ai didi

c - C 程序中标准输入和标准输出的重定向

转载 作者:可可西里 更新时间:2023-11-01 10:44:35 26 4
gpt4 key购买 nike

我在 Windows 控制台应用程序中使用典型的 putsprintfgetchar 函数。现在我想将标准输出和标准输入重定向到 COM 端口。

单独重定向 stdout 工作正常:

freopen ("COM1", "w", stdout);

之后所有输出都按预期进入 COM1。

但是对于输入我面临两个问题:

freopen ("COM1", "r", stdin);

1) 只有标准输入重定向,COM1 打开正常。但是 getchar(或类似函数)不从 COM1 返回字符。 getchar 永远不会返回。我尝试了几种模式(r、r+、rb,甚至 w)。

2) 如果标准输出已经重定向到 COM1,则对标准输入的 freopen 调用失败(返回 NULL)。可能是因为 COM1 已用于标准输出。

环境:控制台应用程序、Windows 7、MinGW

我做错了什么吗?是否有另一种(或更好的)方法来完成重定向?

感谢您的帮助!

最佳答案

我现在无法对其进行测试,因为我只有一台可通过 RDP 访问的虚拟 Windows 机器,没有串行连接,但是,这样的事情不应该工作吗?

int comfd = open("COM1", O_RDWR);
dup2(comfd, 0);
dup2(comfd, 1);

或者,如果你不喜欢硬编码的 fds

int comfd = open("COM1", O_RDWR);
dup2(comfd, fileno(stdin));
dup2(comfd, fileno(stdout));

关于c - C 程序中标准输入和标准输出的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31631636/

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