fanotify_init

FANOTIFY_INIT(2)Ð ÑководÑÑво пÑогÑаммиÑÑа LinuxFANOTIFY_INIT(2)



ÐÐЯ
       fanotify_init - ÑоздаÑÑ Ð¸ иниÑиализиÑÑÐµÑ Ð³ÑÑппÑ
       fanotify

ÐÐÐÐÐ
       #include <fcntl.h>
       #include <sys/fanotify.h>

       int fanotify_init(unsigned int flags, unsigned int event_f_flags);

ÐÐÐСÐÐÐÐ
       ÐÐ±Ð·Ð¾Ñ Ð¿ÑогÑаммного инÑеÑÑейÑа fanotify ÑмоÑÑиÑе
       в fanotify(7).

       ÐÑзов fanotify_init() иниÑиализиÑÑÐµÑ Ð½Ð¾Ð²ÑÑ Ð³ÑÑппÑ
       fanotify и возвÑаÑÐ°ÐµÑ ÑайловÑй деÑкÑипÑоÑ
       оÑеÑеди ÑобÑÑий, ÑвÑзанной Ñ Ð³ÑÑппой.

       Ð Ñайловом деÑкÑипÑоÑе, иÑполÑзÑемом в
       fanotify_mark(2), задаÑÑÑÑ ÑайлÑ, каÑалоги и ÑоÑки
       монÑиÑованиÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑоздаваÑÑÑÑ
       ÑобÑÑÐ¸Ñ fanotify. ÐÑи ÑобÑÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ Ñ
       помоÑÑÑ ÑÑÐµÐ½Ð¸Ñ Ñайлового деÑкÑипÑоÑа. Ðдни
       ÑобÑÑÐ¸Ñ Ð½Ð¾ÑÑÑ ÑведомиÑелÑнÑй ÑаÑакÑеÑ,
       показÑÐ²Ð°Ñ ÑÑо к ÑÐ°Ð¹Ð»Ñ Ð±Ñл полÑÑен доÑÑÑп.
       ÐÑÑгие ÑобÑÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð´Ð»Ñ
       ÑазÑеÑÐµÐ½Ð¸Ñ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа к ÑÐ°Ð¹Ð»Ñ Ð¸Ð»Ð¸
       каÑалогÑ. ÐоÑÑÑп к обÑекÑам Ñайловой ÑиÑÑемÑ
       ÑазÑеÑаеÑÑÑ Ð¿Ð¾ÑÑедÑÑвом запиÑи в ÑайловÑй
       деÑкÑипÑоÑ.

       ÐеÑколÑко пÑогÑамм могÑÑ Ð¸ÑполÑзоваÑÑ
       инÑеÑÑÐµÐ¹Ñ fanotify к одним и Ñем же Ñайлам
       одновÑеменно.

       Ð ÑекÑÑей ÑеализаÑии колиÑеÑÑво гÑÑпп fanotify
       огÑаниÑено 128 на полÑзоваÑелÑ. ÐÑо знаÑение
       нелÑÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ.

       ÐÐ»Ñ Ð²Ñзова fanotify_init() ÑÑебÑеÑÑÑ Ð¼Ð°Ð½Ð´Ð°Ñ
       CAP_SYS_ADMIN. ÐÑо ÑÑебование Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ
       облегÑено в бÑдÑÑÐ¸Ñ Ð²ÐµÑÑиÑÑ Ð¿ÑогÑаммного
       инÑеÑÑейÑа. ÐоÑÑÐ¾Ð¼Ñ Ð½Ð¸Ð¶Ðµ показанÑ
       опÑеделÑннÑе дополниÑелÑнÑе пÑовеÑки
       возможноÑÑей, коÑоÑÑе бÑли ÑеализованÑ.

       ÐÑгÑÐ¼ÐµÐ½Ñ flags ÑодеÑÐ¶Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð±Ð¸Ñовое поле,
       опÑеделÑÑÑее клаÑÑ ÑведомлениÑ,
       запÑаÑиваемÑй пÑиложением, а Ñакже
       однобиÑовÑе полÑ, задаÑÑие поведение
       Ñайлового деÑкÑипÑоÑа.

       ÐÑли на ÑобÑÑÐ¸Ñ Ð´Ð¾ÑÑÑпа заÑегиÑÑÑиÑовалоÑÑ
       неÑколÑко ÑлÑÑаÑелей, Ñо клаÑÑ ÑведомлениÑ
       иÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑдка
       ÑлÑÑаÑелей пÑи полÑÑении ÑобÑÑий.

       Ð flags Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñказан ÑолÑко один из
       ÑледÑÑÑÐ¸Ñ ÐºÐ»Ð°ÑÑов ÑведомлениÑ:

       FAN_CLASS_PRE_CONTENT
              ÐÑо знаÑение позволÑÐµÑ Ð¿ÑинимаÑÑ
              ÑведомлÑÑÑие ÑобÑÑÐ¸Ñ Ð¾Ð± обÑаÑении к
              ÑайлÑ, и ÑобÑÑÐ¸Ñ Ð´Ð¾ÑÑÑпа, запÑаÑиваÑÑие
              доÑÑÑп к ÑайлÑ. Ðн пÑедназнаÑен  длÑ
              ÑлÑÑаÑелей ÑобÑÑий, коÑоÑÑм ÑÑебÑеÑÑÑ Ð´Ð¾ÑÑÑп
              к Ñайлам до Ñого, как в Ð½Ð¸Ñ Ð±ÑдÑÑ
              ÑодеÑжаÑÑÑÑ Ð¾ÐºÐ¾Ð½ÑаÑелÑнÑе даннÑе. ÐÑоÑ
              клаÑÑ ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ
              иÑполÑзован, напÑимеÑ, в пÑогÑаммаÑ
              ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ÐµÑаÑÑиÑеÑкого ÑÑанениÑ.

       FAN_CLASS_CONTENT
              ÐÑо знаÑение позволÑÐµÑ Ð¿ÑинимаÑÑ
              ÑведомлÑÑÑие ÑобÑÑÐ¸Ñ Ð¾Ð± обÑаÑении к
              ÑайлÑ, и ÑобÑÑÐ¸Ñ Ð´Ð¾ÑÑÑпа, запÑаÑиваÑÑие
              доÑÑÑп к ÑайлÑ. Ðн пÑедназнаÑен  длÑ
              ÑлÑÑаÑелей ÑобÑÑий, коÑоÑÑм ÑÑебÑеÑÑÑ Ð´Ð¾ÑÑÑп
              к Ñайлам поÑле Ñого, как они ÑодеÑжаÑ
              оконÑаÑелÑнÑе даннÑе. ÐÑÐ¾Ñ ÐºÐ»Ð°ÑÑ
              ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован,
              напÑимеÑ, в пÑогÑÐ°Ð¼Ð¼Ð°Ñ Ð¾Ð±Ð½Ð°ÑÑжениÑ
              вÑедоноÑного кода.

       FAN_CLASS_NOTIF
              ÐнаÑение по ÑмолÑаниÑ. Ðго не нÑжно
              ÑказÑваÑÑ. ÐÑо знаÑение позволÑеÑ
              пÑинимаÑÑ ÑолÑко ÑобÑÑÐ¸Ñ Ð¾ доÑÑÑпе к
              ÑайлÑ. ÐÑаво на доÑÑÑп к ÑÐ°Ð¹Ð»Ñ Ð·Ð°Ð´Ð°ÑÑ
              невозможно.

       СлÑÑаÑели Ñ ÑазлиÑнÑми клаÑÑами
       Ñведомлений бÑдÑÑ Ð¿ÑинимаÑÑ ÑобÑÑÐ¸Ñ Ð² Ñаком
       поÑÑдке: FAN_CLASS_PRE_CONTENT, FAN_CLASS_CONTENT,
       FAN_CLASS_NOTIF. ÐоÑÑдок ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑлÑÑаÑелей в
       ÑÑом клаÑÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ опÑеделÑн.

       ÐополниÑелÑно в flags могÑÑ Ð±ÑÑÑ ÑÑÑановленÑ
       ÑледÑÑÑие биÑÑ:

       FAN_CLOEXEC
              УÑÑанавливаÑÑ Ñлаг close-on-exec (FD_CLOEXEC) длÑ
              нового Ñайлового деÑкÑипÑоÑа. СмоÑÑиÑе
              опиÑание Ñлага O_CLOEXEC в open(2).

       FAN_NONBLOCK
              ÐклÑÑиÑÑ Ð½ÐµÐ±Ð»Ð¾ÐºÐ¸ÑÑÑÑий Ñлаг (O_NONBLOCK) длÑ
              Ñайлового деÑкÑипÑоÑа. ЧÑение из
              Ñакого Ñайлового деÑкÑипÑоÑа не
              вÑÐ·Ð¾Ð²ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑованиÑ. ÐÑли даннÑе
              оÑÑÑÑÑÑвÑÑÑ, Ñо read(2) завеÑÑиÑÑÑ Ñ Ð¾Ñибкой
              EAGAIN.

       FAN_UNLIMITED_QUEUE
              СнÑÑÑ Ð¾Ð³ÑаниÑение в 16384 ÑобÑÑÐ¸Ñ Ð² оÑеÑеди
              ÑобÑÑий. ÐÐ»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑого Ñлага
              ÑÑебÑеÑÑÑ Ð¼Ð°Ð½Ð´Ð°Ñ CAP_SYS_ADMIN.

       FAN_UNLIMITED_MARKS
              СнÑÑÑ Ð¾Ð³ÑаниÑение в 8192 меÑки. ÐлÑ
              иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑого Ñлага ÑÑебÑеÑÑÑ
              Ð¼Ð°Ð½Ð´Ð°Ñ CAP_SYS_ADMIN.

       РаÑгÑменÑе event_f_flags задаÑÑÑÑ Ñлаги ÑоÑÑоÑниÑ
       Ñайла, коÑоÑÑе бÑдÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð½Ð° оÑкÑÑÑÑе
       ÑайловÑе опиÑаÑели, ÑоздаваемÑе Ð´Ð»Ñ ÑобÑÑий
       fanotify. ÐодÑобней об ÑÑÐ¸Ñ ÑÐ»Ð°Ð³Ð°Ñ ÑмоÑÑиÑе
       опиÑание знаÑений flags в open(2). ÐÑгÑменÑ
       event_f_flags вклÑÑÐ°ÐµÑ Ð¼Ð½Ð¾Ð³Ð¾Ð±Ð¸Ñовое поле длÑ
       Ñежима доÑÑÑпа. ÐÑо поел Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ
       ÑледÑÑÑие знаÑениÑ:

       O_RDONLY
              ÐÑо знаÑение ÑазÑеÑÐ°ÐµÑ Ð´Ð¾ÑÑÑп ÑолÑко на
              ÑÑение.

       O_WRONLY
              ÐÑо знаÑение ÑазÑеÑÐ°ÐµÑ Ð´Ð¾ÑÑÑп ÑолÑко на
              запиÑÑ.

       O_RDWR ÐÑо знаÑение ÑазÑеÑÐ°ÐµÑ Ð´Ð¾ÑÑÑп на ÑÑение и
              запиÑÑ.

       Ð event_f_flags могÑÑ Ð±ÑÑÑ ÑÑÑановленÑ
       дополниÑелÑнÑе биÑÑ. Ðаиболее полезнÑе
       знаÑениÑ:

       O_LARGEFILE
              ÐклÑÑиÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ñайлов более 2 ÐÐ. ÐÑли
              не ÑдаÑÑÑÑ ÑÑÑановиÑÑ ÑÑÐ¾Ñ Ñлаг, Ñо пÑи
              попÑÑке оÑкÑÑÑÑ Ð±Ð¾Ð»ÑÑой Ñайл,
              оÑÑлеживаемÑй гÑÑппой fanotify на
              32-биÑной ÑиÑÑеме, возвÑаÑаеÑÑÑ Ð¾Ñибка
              EOVERFLOW.

       O_CLOEXEC (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.18)
              ÐклÑÑиÑÑ Ñлаг close-on-exec Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾
              оÑкÑÑÑого Ñайлового деÑкÑипÑоÑа.
              СмоÑÑиÑе опиÑание Ñлага O_CLOEXEC в open(2)
              Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑзнаÑÑ ÐºÐ°Ðº ÑÑо можеÑ
              пÑигодиÑÑÑÑ.

       Также доÑÑÑÐ¿Ð½Ñ ÑледÑÑÑие Ñлаги: O_APPEND, O_DSYNC,
       O_NOATIME, O_NONBLOCK и O_SYNC. Указание лÑбÑÑ Ð´ÑÑгиÑ
       Ñлагов в event_f_flagsпÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº оÑибке EINVAL (но
       ÑмоÑÑиÑе ÐÐФÐÐТЫ).

ÐÐÐÐÐ ÐЩÐÐÐÐÐ ÐÐÐЧÐÐÐÐ
       ÐÑи ÑÑпеÑном вÑполнении fanotify_init()
       возвÑаÑÐ°ÐµÑ Ð½Ð¾Ð²Ñй ÑайловÑй деÑкÑипÑоÑ. ÐÑи
       оÑибке возвÑаÑаеÑÑÑ -1, и errno ÑÑÑанавливаеÑÑÑ
       в ÑооÑвеÑÑÑвÑÑÑее знаÑение.

ÐШÐÐÐÐ
       EINVAL Ð flags или event_f_flags Ñказано некоÑÑекÑное
              знаÑение. ÐнаÑение FAN_ALL_INIT_FLAGS
              опÑеделÑÐµÑ Ð²Ñе допÑÑÑимÑе биÑÑ Ð² flags.

       EMFILE ÐолиÑеÑÑво гÑÑпп fanotify Ð´Ð»Ñ ÑÑого
              полÑзоваÑÐµÐ»Ñ Ð¿ÑевÑÑÐ°ÐµÑ 128.

       ÐÑло доÑÑигнÑÑо огÑаниÑение по колиÑеÑÑвÑ
       оÑкÑÑÑÑÑ ÑайловÑÑ Ð´ÐµÑкÑипÑоÑов на пÑоÑеÑÑ.

       ENOMEM Ðе ÑдалоÑÑ Ð²ÑделиÑÑ Ð¿Ð°Ð¼ÑÑÑ Ð´Ð»Ñ Ð³ÑÑппÑ
              ÑведомлениÑ.

       ENOSYS Ð ÑÑом ÑдÑе не Ñеализован fanotify_init().
              ÐÑогÑаммнÑй инÑеÑÑÐµÐ¹Ñ fanotify доÑÑÑпен
              ÑолÑко, еÑли ÑдÑо бÑло ÑобÑано Ñ
              паÑамеÑÑом CONFIG_FANOTIFY.

       EPERM  ÐпеÑаÑÐ¸Ñ Ð·Ð°Ð¿ÑеÑена, Ñак как вÑзÑваÑÑий
              не Ð¸Ð¼ÐµÐµÑ Ð¼Ð°Ð½Ð´Ð°Ñа CAP_SYS_ADMIN.

ÐÐРСÐÐ
       ÐÑзов fanotify_init() поÑвилÑÑ Ð² веÑÑии 2.6.36 ÑдÑа
       Linux и бÑл вклÑÑÑн в веÑÑии 2.6.37.

СÐÐТÐÐТСТÐÐРСТÐÐÐÐРТÐÐ
       ÐаннÑй ÑиÑÑемнÑй вÑзов еÑÑÑ ÑолÑко в Linux.

ÐÐФÐÐТЫ
       Ð ÑдÑÐ°Ñ Linux до веÑÑии 3.18 ÑÑÑеÑÑвовали ÑледÑÑÑие
       деÑекÑÑ:

       *  ÐÑи пеÑедаÑе в event_f_flags Ñлаг O_CLOEXEC
          игноÑиÑÑеÑÑÑ.

       Ð ÑдÑÐ°Ñ Linux до веÑÑии 3.14 ÑÑÑеÑÑвовали ÑледÑÑÑие
       деÑекÑÑ:

       *  ÐнаÑение аÑгÑменÑа event_f_flags не пÑовеÑÑеÑÑÑ
          на коÑÑекÑноÑÑÑ Ñлагов. ÐогÑÑ Ð±ÑÑÑ
          ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ñлаги, пÑедназнаÑеннÑе ÑолÑко
          Ð´Ð»Ñ Ð²Ð½ÑÑÑеннего иÑполÑзованиÑ, Ñакие как
          FMODE_EXEC, и в ÑезÑлÑÑаÑе бÑдÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð´Ð»Ñ
          ÑайловÑÑ Ð´ÐµÑкÑипÑоÑов пÑи ÑÑении из
          Ñайлового деÑкÑипÑоÑа fanotify.

СÐÐТРÐТРТÐÐÐÐ
       fanotify_mark(2), fanotify(7)



Linux                             2016-03-15                  FANOTIFY_INIT(2)