完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
移植 一个开源软件 现在有个问题,开源软件的日志 用了 fprintf 输出到指定文件中, 我试了以下 stream = fopen("/mnt/snmpd.conf", "a+"); 操作 无法, 发现无法把内容定位到指定的 文件中, fprintf对低层硬件接口有什么依赖嘛。还是我用法不对 |
|
相关推荐
11个回答
|
|
|
用法看着没问题,用的什么文件系统
|
|
|
|
|
|
elmfat 文件系统, 现在试了下用fflush(stream)是无法把数据缓冲到文件的,但是用fclose是可以把数据缓冲到文件的
|
|
|
|
|
|
由于缓存的原因,内容未写入文件。
1 在 fopen 之后,加句:setbuf(stream, NULL); 2 fprintf 后面加上 fflush(stream); |
|
|
|
|
|
在fprintf 后面我已经加了 fflush(stream),发现没啥效果,但是在fprintf后面加fclose是可以把缓冲中的数据写到文件中去的,我现在是怀疑 rt-thread 平台下 fflush这个函数是不是有问题, fflush是一个标准的C库函数, rt-thread是不是支持不太好了
|
|
|
|
|
|
|
|
|
|
|
|
按理说 fflush(stream) 会将缓冲区的内容输出到文件的。
|
|
|
|
|
|
另外,你是怎么判断有没有写入成功的?是读了一下吗?如果读的话还要注意文件流指针的位置是不是定位在了合适的位置,写完之后指针定位在了文件结尾,需要用 fseek 指定一下位置。
|
|
|
|
|
|
写入的文件 读取状态字节为0,我在终端查看文件字节数也为0
|
|
|
|
|
|
|
|
|
|
|
|
试了,是可以读取出来的, 但读取的是缓冲中的数据, 文件中是没有保存进去,要保存进去要调用 fsync 同步,但是我现在移植的代码整个日志都用 fsync 去同步写入文件中去的话 那会让整个进程变的很慢的,导致通信不正常, 我以前的理解是就算我直接调用write 写入数据,不用 fsync去同步,理论上文件会周期性的同步到文件中去,只不过不是实时的,但是我测试rt-thread 的elmfat感觉 如果你不调用 fsync 去同步,缓冲中的数据是不会定时主动同步到文件中去的, 我不知道现在是我自己的问题,还是elmfat文件就是这种特性
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:18 , Processed in 0.775046 second(s), Total 61, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1354