c - setbuf() - printf() 和 write()
问题描述
这是我在 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;
}
输出是
缓冲区内容:
这有效
你知道为什么吗?因为现在我看不到这是如何工作的,所以我会将标准输出通过管道传输到标准输入,然后读取结果——这不是我认为的最干净的方法。
谢谢你,祝你有美好的一天 !
解决方案
推荐阅读
- html - 页面刷新后IFrame注销服务
- asp.net-core - Identity Server 4 和多个客户端应用程序
- java - 将 Android 应用程序与 Firebird 数据库连接
- swift - 如何通过快速传递特定年份来获取一年[周六和周日]的所有周末日期?
- r - 对于以下场景,哪个更适合在 R 中使用的预测模型
- java - 如何正确打印枚举器元素?
- python - 从组中的另一行获取值
- javascript - 使用nodejs检索具有对象数组(ref)的字段
- ios - 垂头丧气?到 UIBarButtonItem
- java - 在 ListView 中滚动会丢失文本颜色和字体