这是个在arm linux下遇到的问题,本人linux小白
当我从板子向u盘拷贝数据时,出现拷贝后无数据,或者拷贝数据为0,时有发生。
最后发现是linux的管理机制的原因,虽然显示拷贝成功,但是当u盘拔出的时候,数据内容还在内存中,解决方式,执行命令sync
sync
以下来源 百度百科:
- sync也是一个linux同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。在linux系统中,为了加快数据的读取速度,默认情况下,某些数据将不会直接写入硬盘,而是先暂存内存中,如果一个数据被重复写,这样速度一定快,但存在一个问题,万一重新启动,或者是关机,或者是不正常断电的情况下,由于数据还没来得及存入硬盘,会造成数据更新不正常,这时需要命令sync进行数据的写入,即#sync,在内存中尚未更新的的数据会写入硬盘中。所以在关机或者开机之前最好多执行这个几次,以确保数据写入硬盘。
用途更新 i-node 表,并将缓冲文件写到硬盘中。
语法
sync
- 描述
sync 命令运行 sync 子例程。如果必须停止系统,则运行 sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。 - 函数
#include<unistd.h>
int sync(void);
函数说明:此函数负责将系统缓冲区的内容写回磁盘,以确保数据同步。
另:fsync, fdatasync。
消息
在CDMA中,前向信道四个消息中,是同步消息的意思。