我们正在开发iMX6Sx飞思卡尔主板,使用Yocto构建Linux内核发行版。 我想知道是否有办法检查是否可以检查文件系统操作(特别是写入)是否真正终止,避免在操作仍然停止时关闭/终止进程运行
更清楚一点:当我们的应用程序必须关闭时,我们必须做一些操作(文件副本,写入...),我们必须知道(因为它们是异步的,我认为)当它们是真的完成了。
提前致谢 安德烈
答案 0 :(得分:2)
如果要确保所有写入都提交到存储并且文件系统已更新:
当这两个都完成后,内核已经从内存刷新了所有内容,并确保文件系统更新了你操作的文件。
另一种方法是调用sync(),这可以确保所有文件和文件系统元数据都写入存储的所有内核数据。
注意:
如果您的应用程序使用FILE *而不是文件描述符,则需要首先确保通过调用fflush()或fclose FILE *
将写入的数据从应用程序刷新到内核如果您终止某个应用程序,它所执行的任何写入操作都不会被取消或中断,您可以通过调用sync()或打开同一个文件并调用它来确保它已提交到存储fsync()就可以了。
如果你任意杀死一个应用程序,你就不能期望一切都是一致的,也许应用程序正在对数据库,配置文件等进行2次重要写入,并且在1次写入后你终止了它,文件可能会因其格式而受损。