Манипулирование "липким битом" в программе на C - PullRequest
8 голосов
/ 09 июля 2011

Как мы устанавливаем, сбрасываем и проверяем «залипание» из программы на C?

Спасибо

Ответы [ 2 ]

10 голосов
/ 09 июля 2011

Для считывания флешки, которую вы используете 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);

этот код не проверен.

man-страниц: stat (2) chmod (2)

1 голос
/ 09 июля 2011

Это бит 01000 (восьмеричное), поэтому вы можете установить его с помощью chmod(dir, 01000 | perms).Я уверен, что если вы поищете заголовки, возможно stat.h, вы найдете правильное имя для бита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...