Jer*_*ock 5 macos flags dropbox stat
我试图检测Dropbox忙于在Mac OS X中更新用户Dropbox中的文件.通过在文件上运行stat(1)或stat(2),我看到用户定义的文件标志(st_flags)通常是0x40,但是当Dropbox更新文件时,它们会变为0x00几秒钟.
在我的桌面和其他文件夹中查看,我看到~95%的文件的标志值为0x00,但大约5%的文件的值为0x40.所以它可能不仅仅是Dropbox实现细节.我无法识别任何用于预测哪些文件具有0x40标志的模式.有谁知道这些值是什么意思?谁是定义它们的"用户"?
好吧,尽管马丁基本上用一种非常有根据的猜测来回答这个问题,但我还是把它作为一个答案,因为它作为一个评论输入的时间太长了.
这是证据......
•实际上,10.7是引入自动保存和版本的时候,这就是为什么你在10.6中没有在stat.h中看到UF_TRACKED的原因.
•我在运行Mac OS X 10.7的Mac上尝试了我的实验,它的行为与10.8相同.
•有是一个模式:一些应用程序,它检查后数似乎是那些已经采用了自动保存和版本创建的文档文件,是在1 UF_TRACKED = 0×40的人.
•另一项实验.我在Mac OS X中重命名了修订守护程序可执行文件,
/System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/Support/revisiond
然后重新启动Mac,并监视Dropbox中文件文件的UF_TRACKED状态,该文件具有0x40.然后我在另一台Mac上更改了文件,以便Dropbox将其禁用修订后台程序将其推送到此Mac .结果:文件的UF_TRACKED状态从0x40变为0x00,但这次它在2秒后没有变回0x40.
• 在将修订后台程序恢复为原始名称后30秒后,它确实更改为0x40,然后重新启动.(显然修订版是使用KeepAlive属性启动的.)
==================
因此,马丁的猜测是正确的证据是压倒性的.这是Apple的修订守护进程,而不是将UF_TRACKED设置为0x40的Dropbox.这一点的含义是Lion Auto Save和Versions正在跟踪其文档修订版.
可以使用chflags命令行工具或chflags()系统调用设置标志(请参阅man 2 chflags).这些值可以在"/usr/include/sys/stat.h"中找到.
UF_TRACKED似乎有点特别.它记录在"sys/stat.h"中
#define UF_TRACKED 0x00000040 /* file renames and deletes are tracked */
Run Code Online (Sandbox Code Playgroud)
但不是在"chflags"手册页中.
不幸的是,我无法告诉你"跟踪"究竟意味着什么,但也许这有助于找到更多信息.