shell 命令的返回是否保证输出文件已被写入?

shell 命令的返回是否保证输出文件已被写入?

我正在构建一个 OSX 应用程序并使用屏幕截图命令抓取屏幕截图并将其写入磁盘:

screencapture -mT0 ~/screenshot.png

如果我没有在后台运行 UNIX 命令,我是否可以期望在执行命令并且收到退出状态时完全输出文件?

答案1

始终存在缓冲区,因此当命令返回时,文件可能尚未写入磁盘。此时,所有应用程序都会看到该文件,但如果您的系统崩溃或断电,则重新启动后该文件可能不存在或不完整。

您可以sync稍后运行以刷新所有文件系统缓冲区,但更改可能仅存在于磁盘缓冲区中,而尚未写入磁盘本身。

相关内容