use*_*675 4 c string stderr io-redirection
我希望能够将stderr重定向到C字符串,因为我需要在我正在编写的程序中使用该字符串.我想避免写入文件(在硬盘上),然后读取文件以获取字符串.完成这项工作的最佳方法是什么?
iab*_*der 13
你可以使用setbuf()来改变stderr缓冲区:
#include <stdio.h>
int main(void)
{
char buf[BUFSIZ];
setbuf(stderr, buf);
fprintf(stderr, "Hello, world!\n");
printf("%s", buf);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印:
Hello, world!
Hello, world!
Run Code Online (Sandbox Code Playgroud)
注意:您应该在流上的任何操作之前更改缓冲区.
这是假设 stderr 来自另一个程序。如果您想捕获程序和进程的所有 stderr 输出,请在单独的线程中通过 监听对 stderr 的写入fopen("/dev/stderr", "r")。
| 归档时间: |
|
| 查看次数: |
5793 次 |
| 最近记录: |