是否可以在重定向之前读取标准输出? 我试图从C++中的STDUT中读取,但是我发现的每一个例子都意味着使用管道和 DUP ,我想知道是否有办法避免它们。比如说: cout << "Hello world" << endl; /* ... */ read(STDOUT_FILENO, buffer, MAX_LEN) cout
简单的答案是你不能从是否可以在重定向之前读取标准输出? 我试图从C++中的STDUT中读取,但是我发现的每一个例子都意味着使用管道和 DUP ,我想知道是否有办法避免它们。比如说: cout << "Hello world" << endl; /* ... */ read(STDOUT_FILENO, buffer, MAX_LEN) cout,c++,linux,stdout,C++,Linux,Stdout,简单的答案是你不能从STDOUT\u FILENO读取。对的调用将始终返回EBADF,因为STDOUT\u FILENO无效。这就是为什么人们使用pipe和dup 如果你正在寻找一个C++的方法来解决我想做的事情,请检查答案:如果你用“你自己想要的”来替换 STD::CUT//Cuff>的输出缓冲区,你可以自己操作它。不幸的是,这将只捕获到std::cout的输出操作,而不会直接调用write(STDOUT\u FILENO,…)、printf(…)等等。(以我的经验来看)这也更不方便。简单的
STDOUT\u FILENO
读取。对的调用将始终返回EBADF
,因为STDOUT\u FILENO
无效。这就是为什么人们使用pipe
和dup
<>如果你正在寻找一个C++的方法来解决我想做的事情,请检查答案:如果你用“你自己想要的”来替换<代码> STD::CUT//Cuff>的输出缓冲区,你可以自己操作它。不幸的是,这将只捕获到
std::cout
的输出操作,而不会直接调用write(STDOUT\u FILENO,…)
、printf(…)
等等。(以我的经验来看)这也更不方便。简单的答案是你不能从STDOUT\u FILENO
读取。对的调用将始终返回EBADF
,因为STDOUT\u FILENO
无效。这就是为什么人们使用pipe
和dup
<>如果你正在寻找一个C++的方法来解决我想做的事情,请检查答案:如果你用“你自己想要的”来替换<代码> STD::CUT//Cuff>的输出缓冲区,你可以自己操作它。不幸的是,这将只捕获到
std::cout
的输出操作,而不会直接调用write(STDOUT\u FILENO,…)
、printf(…)
等等。(以我的经验来看)它也更不方便。你为什么要读STDOUT?这是一个用于写入的输出通道。可能与的重复-特别是对于该问题。但是-而不是cout
-为什么不流到ostringstream
?例如,为什么不读取STDOUT?它是一个用于写入的输出通道。可能的重复-特别是对于该问题。但是-而不是cout
-例如,为什么不流到ostringstream
?