这是我在Stackoverflow上的第一步!
所以,我正在尝试使用setbuf()
将stdout
重定向到char buffer[BUFSIZ]
。当我使用printf()
时它完美地工作,但是当我使用系统调用write()
时根本不工作。
这是一个代码示例:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
char buffer[BUFSIZ];
freopen("/dev/null", "a", stdout);
setbuf(stdout, buffer);
printf("This works\n");
write(stdout->_file, "This doesn't.\n", 14);
fflush(stdout);
freopen("/dev/tty", "a", stdout);
printf("Buffer content :\n%s", buffer);
return 0;
}
输出是
缓冲内容: 这有效
你知道为什么吗?因为现在我看不出这是如何工作的,我将stdout传递给stdin,然后读取结果 - 这不是我认为最干净的方法。
谢谢你,祝你有美好的一天 !