Objective c st_标志位的解释
我正在编写一个python脚本来删除MacOS上的文件,我遇到了受SIP保护的文件。我知道st_标志的存在很可能意味着我无法删除该文件。就像这里:Objective c st_标志位的解释,objective-c,linux,macos,file,unix,Objective C,Linux,Macos,File,Unix,我正在编写一个python脚本来删除MacOS上的文件,我遇到了受SIP保护的文件。我知道st_标志的存在很可能意味着我无法删除该文件。就像这里: >>> os.stat(f).st_flags 524288 但我很想知道这到底意味着什么。我查看了stat.h,看到: /* * Definitions of flags stored in file flags word. * * Super-user and owner changeable flags. */ #d
>>> os.stat(f).st_flags
524288
但我很想知道这到底意味着什么。我查看了stat.h,看到:
/*
* Definitions of flags stored in file flags word.
*
* Super-user and owner changeable flags.
*/
#define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */
#define UF_NODUMP 0x00000001 /* do not dump file */
#define UF_IMMUTABLE 0x00000002 /* file may not be changed */
#define UF_APPEND 0x00000004 /* writes to file may only append */
#define UF_OPAQUE 0x00000008 /* directory is opaque wrt. union */
/*
* The following bit is reserved for FreeBSD. It is not implemented
* in Mac OS X.
*/
/* #define UF_NOUNLINK 0x00000010 */ /* file may not be removed or renamed */
#define UF_COMPRESSED 0x00000020 /* file is compressed (some file-systems) */
/* UF_TRACKED is used for dealing with document IDs. We no longer issue
* notifications for deletes or renames for files which have UF_TRACKED set. */
#define UF_TRACKED 0x00000040
#define UF_DATAVAULT 0x00000080 /* entitlement required for reading */
/* and writing */
/* Bits 0x0100 through 0x4000 are currently undefined. */
#define UF_HIDDEN 0x00008000 /* hint that this item should not be */
/* displayed in a GUI */
/*
* Super-user changeable flags.
*/
#define SF_SUPPORTED 0x001f0000 /* mask of superuser supported flags */
#define SF_SETTABLE 0xffff0000 /* mask of superuser changeable flags */
#define SF_ARCHIVED 0x00010000 /* file is archived */
#define SF_IMMUTABLE 0x00020000 /* file may not be changed */
#define SF_APPEND 0x00040000 /* writes to file may only append */
#define SF_RESTRICTED 0x00080000 /* entitlement required for writing */
#define SF_NOUNLINK 0x00100000 /* Item may not be removed, renamed or mounted on */
我只是不太明白怎么加起来是524288。我的意思是,我有点明白了,就像权限位一样,右边第6位的1或更多应该意味着设置了SF_链接,但是5是从哪里来的呢?右边第五个位置的2表示设置了SF_IMMUTABLE,第二个位置是8,这是UF_DATAVAULT,这很有意义。位置3-4的其他值和5(从右起)的值我不明白。有没有关于如何读取此内容的指针?是十进制的。524288=0x80000=
SF\u受限
。我觉得自己很笨。只要把它放在计算器里,转换后就可以了。谢谢那是十进制的。524288=0x80000=SF\u受限
。我觉得自己很笨。只要把它放在计算器里,转换后就可以了。谢谢