C语言 对正在写入的文件进行 stat() 调用的结果是什么



在 Solaris 10 上调用stat()系统时遇到一点问题。我正在做FTP,同时,对通过FTP同时写入的文件调用stat(检查文件大小)。

假设文件正在写入目录,同时调用stat()命令/调用(并行)。那么st_size struct的结果会是0吗?

或者,stat调用是否会反映 FTP 发生时文件的当前大小?

FTP 是否像我认为的那样具有事务性?

stat() -call 将显示与 ls 相同的内容,因为ls使用stat()(或该系列中的类似函数)来显示文件大小和属性。

因此,对于所有常见的文件系统,stat()将返回当前文件大小,该文件大小通常会在 ftp put 事务期间不断增长。

但是,FTP 服务器(甚至 FTP 客户端)可能会选择创建请求的目标名称的空文件,将实际数据写入临时文件,并在传输完成后将此文件重命名为实际文件名。在这种情况下,stat()将返回大小 0。但这不是通常发生的方式。

最新更新