在 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。但这不是通常发生的方式。