我们如何在C程序中设置,重置和检查“粘滞位”?
由于
答案 0 :(得分:10)
要阅读您使用的标记位stat()
,请检查.st_mode
S_ISVTX
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
struct stat file_stats;
stat("my_file", &file_stats);
if (file_stats.st_mode & S_ISVTX)
printf("sticky\n");
重置它,您可以通过chmod
struct stat file_stats;
stat("my_file", &file_stats);
mode_t new_mode = file_stats.st_mode & ~S_ISVTX;
chmod("my_file", new_mode);
设置它,chmod
它是
struct stat file_stats;
stat("my_file", &file_stats);
mode_t new_mode = file_stats.st_mode | S_ISVTX;
chmod("my_file", new_mode);
此代码未经测试。
答案 1 :(得分:1)
它位为01000(八进制),因此您可以使用chmod(dir, 01000 | perms)
进行设置。我敢肯定,如果你在标题周围戳,也许stat.h,你会找到正确的名称。