Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c st_标志位的解释_Objective C_Linux_Macos_File_Unix - Fatal编程技术网

Objective c 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

我正在编写一个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.
 */
#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受限
。我觉得自己很笨。只要把它放在计算器里,转换后就可以了。谢谢