写文件丢数据

jinglirensheng 2010-05-14 02:51:03
在线程里将从串口读出的数据写成txt文件


1.在线程中这个一直调用:open-write-close 请问这个方式可取不?

2.数据并没有完全写到文件中,并且不报错,而且丢失的总是同样的数据,基本上是最后的一句。如果用断点调试能完全写进


求原因,求解释说明
...全文
115 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryangio 2010-05-15
  • 打赏
  • 举报
回复
fsync(int fd)
保证数据写入磁盘等存储设备中用这个
jinglirensheng 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jack281706 的回复:]

每次调用write后,使用fflush立即写,应该不会丢数据
[/Quote]

没起作用啊
向立天 2010-05-14
  • 打赏
  • 举报
回复
1. 这个方式很不合理,应该一次打开确定不需要再写了再关闭
2. 你关闭文件是在线程中么?有可能是你的同步出现问题
jack281706 2010-05-14
  • 打赏
  • 举报
回复
每次调用write后,使用fflush立即写,应该不会丢数据
jinglirensheng 2010-05-14
  • 打赏
  • 举报
回复
就一个线程,就是读串口数据的线程中
jinglirensheng 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bobo364 的回复:]

你用的线程指什么语言的线程,c的话大部分是后来人开发的线程头文件
根据你的2中的说明,我认为问题在线程的调用上,很可能是另一线程终端了写文件的线程,导致了没有完全写入文件中
[/Quote]

vc中的api线程

“很可能是另一线程终端了写文件的线程”这句话通吗?啥意思?
jinglirensheng 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 freezezdj 的回复:]

可能是你写的速度跟不上它写的速度。
从串口读的数据保存到内存。
然后在从内存中写到文件。
[/Quote]

可能是你写的速度跟不上它写的速度。:
我是这么做的,读串口数据,将有用的数据保存到buffer中,在写到文件中,怎么会“写的速度跟不上它写的速度”啥意思?

bobo364 2010-05-14
  • 打赏
  • 举报
回复
你用的线程指什么语言的线程,c的话大部分是后来人开发的线程头文件
根据你的2中的说明,我认为问题在线程的调用上,很可能是另一线程终端了写文件的线程,导致了没有完全写入文件中
冻结 2010-05-14
  • 打赏
  • 举报
回复
可能是你写的速度跟不上它写的速度。
从串口读的数据保存到内存。
然后在从内存中写到文件。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧