这是我进行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,然后读取结果-我认为这不是最干净的方法。
谢谢,祝你有美好的一天!