F_SEAL_SEAL необъявленный, даже если заголовки включены

Я пытаюсь использовать герметизацию файлов в Linux. Вот пример программы на Си.

#define _GNU_SOURCE
#include <unistd.h>
#include <fcntl.h>

int main(void) {
    (void)F_SEAL_SEAL;
}

Вы можете построить его, используя gcc -Wall -o ./linux_file_sealing linux_file_sealing.c или похожие.

Когда я его строю, я получаю сообщение об ошибке F_SEAL_SEAL,

gcc -Wall -o ./linux_file_sealing linux_file_sealing.c
linux_file_sealing.c: In function ‘main’:
linux_file_sealing.c:7:19: error: ‘F_SEAL_SEAL’ undeclared (first use in this function)
     printf("%d\n",F_SEAL_SEAL);
                   ^
linux_file_sealing.c:7:19: note: each undeclared identifier is reported only once for each function it appears in

Я в том числе unistd.h а также fcntl.hв соответствии с man-страницей... так что еще я должен делать и где это описано?

(Страницы руководства просто говорят, что герметизация "специфична для Linux", но не дают никаких дополнительных подробностей. Это причина для включения GNU_SOURCE определить, как вы получаете другие специфичные для Linux вещи, но для F_SEAL_SEAL кажется, не имеет значения.)

(Ubuntu 16.04 LTS, Linux 4.4.0-36)

1 ответ

Решение

Ты хочешь

#include <linux/fcntl.h>

вместо

#include <fcntl.h>
Другие вопросы по тегам