gpt4 book ai didi

c++ - 是否可以在重定向前读取 STDOUT?

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:15 25 4
gpt4 key购买 nike

我正在尝试从 C++ 中的 STDOUT 读取,但我发现的每个示例都暗示使用 pipedup,我想知道是否有办法避免它们。让我们说:

cout << "Hello world" << endl;

/* ... */

read(STDOUT_FILENO, buffer, MAX_LEN)

最佳答案

简单的答案是您无法从 STDOUT_FILENO 中读取。调用read将始终返回 EBADF,因为 STDOUT_FILENO 无法读取。这就是人们使用 pipedup 的原因。


如果您正在寻找一种更 C++ 的方法来实现我认为您想要做的事情,请查看以下答案:How to redirect cin and cout to files?如果您将 std::cout 的输出缓冲区替换为您自己创建的内容,您可以随意操作它。不幸的是,这只会捕获到 std::cout 的输出操作,而不是像直接调用 write(STDOUT_FILENO, ...)printf(.. .) 等等。这也更不方便(以我的经验)。

关于c++ - 是否可以在重定向前读取 STDOUT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41684943/

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