是否可以在重定向之前读取标准输出
Is it possible to read STDOUT before redirection?
我试图用C++阅读STDOUT,但我发现的每个例子都意味着使用pipe
和dup
,我想知道是否有办法避免它们。让我们说只是:
cout << "Hello world" << endl;
/* ... */
read(STDOUT_FILENO, buffer, MAX_LEN)
简单的答案是您无法从STDOUT_FILENO
中读取。对read
的调用将始终返回EBADF
因为STDOUT_FILENO
读取无效。这就是为什么人们使用pipe
和dup
.
如果您正在寻找一种更C++的方法来实现我认为您想要做的事情,请查看以下问题的答案:如何将 cin 和 cout 重定向到文件?如果将std::cout
的输出缓冲区替换为自己创建的内容,则可以根据需要对其进行操作。不幸的是,这只会捕获std::cout
的输出操作,而不是直接调用write(STDOUT_FILENO, ...)
、printf(...)
等。这也更不方便(根据我的经验)。
相关文章:
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 使用提升过程获取 shell 命令的标准输出
- 快速读取标准输入缓冲区,无需检查
- 将标准输出重定向到ostream
- 从popen()读取的输出是否在pclose()之前完成
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- 在程序执行期间从标准输出重定向到自定义流
- 标准输出C++意外行为
- 使用 QProcess 读取标准输出
- 是否可以在重定向之前读取标准输出
- 读取 Qt 中连续 QProcess 的标准输出
- 将文件的全部内容读取到标准输出的最短方法是什么
- 如何在windows中的gcc中逐行读取命令输出,就像使用标准输入一样
- QProcess -> 从 Linux 上的 sftp 读取标准输出
- 从标准输出读取奇怪的性能问题
- 通过读取功能而不是fread读取标准输出
- 读取标准输出文件
- 如何从分离的QProcess中读取标准输出/标准错误
- 如何从linux上用libexpect在c++中创建的FILE*中读取标准输出
- Linux -子读取管道接收发送到标准输出的调试消息