在C程序中操作“粘性位”

时间:2011-07-09 04:40:42

标签: c linux

我们如何在C程序中设置,重置和检查“粘滞位”?

由于

2 个答案:

答案 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);

此代码未经测试。

手册页:stat(2) chmod(2)

答案 1 :(得分:1)

它位为01000(八进制),因此您可以使用chmod(dir, 01000 | perms)进行设置。我敢肯定,如果你在标题周围戳,也许stat.h,你会找到正确的名称。