diff options
Diffstat (limited to 'po/ru/man7/inotify.7.po')
-rw-r--r-- | po/ru/man7/inotify.7.po | 2740 |
1 files changed, 2740 insertions, 0 deletions
diff --git a/po/ru/man7/inotify.7.po b/po/ru/man7/inotify.7.po new file mode 100644 index 00000000..85ac71af --- /dev/null +++ b/po/ru/man7/inotify.7.po @@ -0,0 +1,2740 @@ +# Russian translation of manpages +# This file is distributed under the same license as the manpages-l10n package. +# Copyright © of this file: +# Azamat Hackimov <azamat.hackimov@gmail.com>, 2013-2014, 2017. +# Dmitriy S. Seregin <dseregin@59.ru>, 2013. +# Yuri Kozlov <yuray@komyakino.ru>, 2011-2019. +# Иван Павлов <pavia00@gmail.com>, 2017, 2019. +msgid "" +msgstr "" +"Project-Id-Version: manpages-l10n\n" +"POT-Creation-Date: 2024-03-01 16:58+0100\n" +"PO-Revision-Date: 2019-10-05 08:17+0300\n" +"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" +"Language-Team: Russian <man-pages-ru-talks@lists.sourceforge.net>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" +"X-Generator: Lokalize 2.0\n" + +#. type: TH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "inotify events" +msgid "inotify" +msgstr "События inotify" + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "2023-10-31" +msgstr "31 октября 2023 г." + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "Linux man-pages 6.06" +msgstr "Linux man-pages 6.06" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NAME" +msgstr "ИМЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "inotify - monitoring filesystem events" +msgstr "inotify - наблюдает за событиями файловой системы" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "DESCRIPTION" +msgstr "ОПИСАНИЕ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<inotify> API provides a mechanism for monitoring filesystem events. " +"Inotify can be used to monitor individual files, or to monitor directories. " +"When a directory is monitored, inotify will return events for the directory " +"itself, and for files inside the directory." +msgstr "" +"Программный интерфейс I<inotify> предоставляет механизм для слежения за " +"событиями в файловой системе. Его можно использовать для слежения за " +"отдельными файлами или каталогами. При слежении за каталогами inotify " +"возвращает события как для самого каталога, так и для файлов внутри каталога." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The following system calls are used with this API:" +msgstr "В программный интерфейс входят следующие системные вызовы:" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "\\[bu]" +msgstr "\\[bu]" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<inotify_init>(2) creates an inotify instance and returns a file " +"descriptor referring to the inotify instance. The more recent " +"B<inotify_init1>(2) is like B<inotify_init>(2), but has a I<flags> argument " +"that provides access to some extra functionality." +msgstr "" +"Вызов B<inotify_init>(2) создаёт экземпляр inotify и возвращает файловый " +"дескриптор, ссылающийся на экземпляр inotify. Более новый " +"B<inotify_init1>(2) подобен B<inotify_init>(2), но имеет аргумент I<flags>, " +"который предоставляет доступ к некоторым дополнительным возможностям." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<inotify_add_watch>(2) manipulates the \"watch list\" associated with an " +"inotify instance. Each item (\"watch\") in the watch list specifies the " +"pathname of a file or directory, along with some set of events that the " +"kernel should monitor for the file referred to by that pathname. " +"B<inotify_add_watch>(2) either creates a new watch item, or modifies an " +"existing watch. Each watch has a unique \"watch descriptor\", an integer " +"returned by B<inotify_add_watch>(2) when the watch is created." +msgstr "" +"Вызов B<inotify_add_watch>(2) изменяет «список наблюдения», связанный с " +"экземпляром inotify. Каждый элемент (сторожок (watch)) в списке задаёт путь " +"к файлу или каталогу и некоторый набор событий, которые ядро должно " +"отслеживать для файла, на который указывает этот путь. Вызов " +"B<inotify_add_watch>(2) или создаёт новый сторожок, или изменяет " +"существующий. Каждый сторожок имеет уникальный «дескриптор сторожка» — целое " +"число, возвращаемое B<inotify_add_watch>(2) при создании сторожка." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When events occur for monitored files and directories, those events are made " +"available to the application as structured data that can be read from the " +"inotify file descriptor using B<read>(2) (see below)." +msgstr "" +"При возникновении событий с отслеживаемыми файлами и каталогами, эти события " +"становятся доступны приложению в виде структурированных данных, которые " +"можно прочитать из файлового дескриптора inotify с помощью B<read>(2) " +"(смотрите ниже)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "B<inotify_rm_watch>(2) removes an item from an inotify watch list." +msgstr "" +"Вызов B<inotify_rm_watch>(2) удаляет элемент из списка наблюдения inotify." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When all file descriptors referring to an inotify instance have been closed " +"(using B<close>(2)), the underlying object and its resources are freed for " +"reuse by the kernel; all associated watches are automatically freed." +msgstr "" +"При закрытии (с помощью B<close>(2)) файловых дескрипторов, ссылающихся на " +"экземпляр inotify, этот объект и его ресурсы освобождаются для повторного " +"использования ядром; все связанные сторожки освобождаются автоматически." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"With careful programming, an application can use inotify to efficiently " +"monitor and cache the state of a set of filesystem objects. However, robust " +"applications should allow for the fact that bugs in the monitoring logic or " +"races of the kind described below may leave the cache inconsistent with the " +"filesystem state. It is probably wise to do some consistency checking, and " +"rebuild the cache when inconsistencies are detected." +msgstr "" +"При корректном программировании, приложение может эффективно использовать " +"inotify для слежения и кэширования состояния набора объектов файловой " +"системы. Однако, в тщательно проработанных приложениях нужно предполагать " +"наличие ошибок в логике слежения или состязательности, описанных далее, " +"которые могут приводить к рассогласованности кэша с состоянием файловой " +"системы. Вероятно, лучше сделать некоторую проверку и перестроить кэш при " +"обнаружении рассогласованности." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Reading events from an inotify file descriptor" +msgstr "Чтение событий из файлового дескриптора inotify" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"To determine what events have occurred, an application B<read>(2)s from the " +"inotify file descriptor. If no events have so far occurred, then, assuming " +"a blocking file descriptor, B<read>(2) will block until at least one event " +"occurs (unless interrupted by a signal, in which case the call fails with " +"the error B<EINTR>; see B<signal>(7))." +msgstr "" +"Чтобы определить, что события произошли, приложение должно прочитать " +"(B<read>(2)) файловый дескриптор inotify. Если событий не было, то " +"предполагая, что это блокирующий файловый дескриптор, вызов B<read>(2) " +"заблокирует работу до возникновения, по крайней мере, одного события (если " +"не будет прерван сигналом; в этом случае вызов завершается с ошибкой " +"B<EINTR>, смотрите B<signal>(7))." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Each successful B<read>(2) returns a buffer containing one or more of the " +"following structures:" +msgstr "" +"При успешном выполнении B<read>(2) возвращает буфер с одной или более " +"структурами следующего вида:" + +#. #-#-#-#-# archlinux: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# debian-bookworm: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: http://sources.redhat.com/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# debian-unstable: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# fedora-40: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# fedora-rawhide: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# mageia-cauldron: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# opensuse-leap-15-6: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# opensuse-tumbleweed: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"struct inotify_event {\n" +" int wd; /* Watch descriptor */\n" +" uint32_t mask; /* Mask describing event */\n" +" uint32_t cookie; /* Unique cookie associating related\n" +" events (for rename(2)) */\n" +" uint32_t len; /* Size of I<name> field */\n" +" char name[]; /* Optional null-terminated name */\n" +"};\n" +msgstr "" +"struct inotify_event {\n" +" int wd; /* дескриптор наблюдаемого */\n" +" uint32_t mask; /* маска, описывающая событие */\n" +" uint32_t cookie; /* уникальный cookie, связывающий относящиеся\n" +" друг к другу события (для rename(2)) */\n" +" uint32_t len; /* размер поля I<name> */\n" +" char name[]; /* необязательное имя, завершающееся null */\n" +"};\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<wd> identifies the watch for which this event occurs. It is one of the " +"watch descriptors returned by a previous call to B<inotify_add_watch>(2)." +msgstr "" +"В I<wd> указывается сторожок, к которому относится событие. Это один из " +"дескрипторов сторожка, полученный из вызова B<inotify_add_watch>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<mask> contains bits that describe the event that occurred (see below)." +msgstr "" +"В I<mask> содержатся биты, описывающие возникшее событие (смотрите ниже)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<cookie> is a unique integer that connects related events. Currently, this " +"is used only for rename events, and allows the resulting pair of " +"B<IN_MOVED_FROM> and B<IN_MOVED_TO> events to be connected by the " +"application. For all other event types, I<cookie> is set to 0." +msgstr "" +"Значение I<cookie> — это уникальное целое, которое объединяет связанные " +"события. В настоящее время используется только для событий переименования и " +"позволяет приложению объединить возвращаемые B<IN_MOVED_FROM> и " +"B<IN_MOVED_TO> в пару событий. Для остальных типов событий значение " +"I<cookie> равно 0." + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "The I<name> field is present only when an event is returned for a file " +#| "inside a watched directory; it identifies the filename within to the " +#| "watched directory. This filename is null-terminated, and may include " +#| "further null bytes (\\(aq\\e0\\(aq) to align subsequent reads to a " +#| "suitable address boundary." +msgid "" +"The I<name> field is present only when an event is returned for a file " +"inside a watched directory; it identifies the filename within the watched " +"directory. This filename is null-terminated, and may include further null " +"bytes (\\[aq]\\e0\\[aq]) to align subsequent reads to a suitable address " +"boundary." +msgstr "" +"Поле I<name> существует только когда событие возвращается для файла внутри " +"отслеживаемого каталога; им определяется имя файла внутри отслеживаемого " +"каталога. Это имя завершается null и может включать дополнительные байты " +"null («\\e0») для выравнивания на подходящую границу адреса при последующих " +"операций чтения." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<len> field counts all of the bytes in I<name>, including the null " +"bytes; the length of each I<inotify_event> structure is thus I<sizeof(struct " +"inotify_event)+len>." +msgstr "" +"Поле I<len> содержит количество всех байт в I<name>, включая байты null; " +"длина каждой структуры I<inotify_event> равна I<sizeof(struct " +"inotify_event)+len>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "The behavior when the buffer given to B<read>(2) is too small to return " +#| "information about the next event depends on the kernel version: in " +#| "kernels before 2.6.21, B<read>(2) returns 0; since kernel 2.6.21, " +#| "B<read>(2) fails with the error B<EINVAL>. Specifying a buffer of size" +msgid "" +"The behavior when the buffer given to B<read>(2) is too small to return " +"information about the next event depends on the kernel version: before Linux " +"2.6.21, B<read>(2) returns 0; since Linux 2.6.21, B<read>(2) fails with " +"the error B<EINVAL>. Specifying a buffer of size" +msgstr "" +"Если буфер, заданный в B<read>(2), слишком мал для возврата информации о " +"следующем событии, то поведение зависит от версии ядра: в ядрах до версии " +"2.6.21, B<read>(2) возвращает 0; начиная с версии 2.6.21, B<read>(2) " +"завершается с ошибкой B<EINVAL>. Указание размера буфера " + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid " sizeof(struct inotify_event) + NAME_MAX + 1\n" +msgid "sizeof(struct inotify_event) + NAME_MAX + 1\n" +msgstr " sizeof(struct inotify_event) + NAME_MAX + 1\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "will be sufficient to read at least one event." +msgstr "будет достаточно для чтения, по крайней мере, одного события." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "inotify events" +msgstr "События inotify" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<inotify_add_watch>(2) I<mask> argument and the I<mask> field of the " +"I<inotify_event> structure returned when B<read>(2)ing an inotify file " +"descriptor are both bit masks identifying inotify events. The following " +"bits can be specified in I<mask> when calling B<inotify_add_watch>(2) and " +"may be returned in the I<mask> field returned by B<read>(2):" +msgstr "" +"В аргументе B<inotify_add_watch>(2) I<mask> и поле I<mask> структуры " +"I<inotify_event>, возвращаемых при чтении файлового дескриптора inotify, " +"содержатся битовые маски, определяющие события inotify. Следующие биты могут " +"быть заданы в I<mask> при вызове B<inotify_add_watch>(2) и возвращены в поле " +"I<mask>, возвращаемом B<read>(2):" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ACCESS> (+)" +msgstr "B<IN_ACCESS> (+)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File was accessed (e.g., B<read>(2), B<execve>(2))." +msgstr "Был произведён доступ к файлу (например, B<read>(2), B<execve>(2))." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ATTRIB> (*)" +msgstr "B<IN_ATTRIB> (*)" + +#. FIXME . +#. Events do not occur for link count changes on a file inside a monitored +#. directory. This differs from other metadata changes for files inside +#. a monitored directory. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "Metadata changed\\(emfor example, permissions (e.g., B<chmod>(2)), " +#| "timestamps (e.g., B<utimensat>(2)), extended attributes (B<setxattr>(2)), " +#| "link count (since Linux 2.6.25; e.g., for the target of B<link>(2) and " +#| "for B<unlink>(2)), and user/group ID (e.g., B<chown>(2))." +msgid "" +"Metadata changed\\[em]for example, permissions (e.g., B<chmod>(2)), " +"timestamps (e.g., B<utimensat>(2)), extended attributes (B<setxattr>(2)), " +"link count (since Linux 2.6.25; e.g., for the target of B<link>(2) and for " +"B<unlink>(2)), and user/group ID (e.g., B<chown>(2))." +msgstr "" +"Изменились метаданные — например, права доступа (например, B<chmod>(2)), " +"отметки времени (например, B<utimensat>(2)), расширенные атрибуты " +"(B<setxattr>(2)), счётчик ссылок (начиная с Linux 2.6.25; например, для " +"аргумента назначения B<link>(2) и B<unlink>(2)) и идентификатор пользователя/" +"группы (например, B<chown>(2))." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_CLOSE_WRITE> (+)" +msgstr "B<IN_CLOSE_WRITE> (+)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File opened for writing was closed." +msgstr "Файл, открытый для записи, был закрыт." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_CLOSE_NOWRITE> (*)" +msgstr "B<IN_CLOSE_NOWRITE> (*)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File or directory not opened for writing was closed." +msgstr "Файл или каталог, не открытый для записи, был закрыт." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_CREATE> (+)" +msgstr "B<IN_CREATE> (+)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"File/directory created in watched directory (e.g., B<open>(2) B<O_CREAT>, " +"B<mkdir>(2), B<link>(2), B<symlink>(2), B<bind>(2) on a UNIX domain socket)." +msgstr "" +"В отслеживаемом каталоге был создан файл/каталог (например, B<open>(2) " +"B<O_CREAT>, B<mkdir>(2), B<link>(2), B<symlink>(2), B<bind>(2) для доменного " +"сокета UNIX)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_DELETE> (+)" +msgstr "B<IN_DELETE> (+)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File/directory deleted from watched directory." +msgstr "В отслеживаемом каталоге был удалён файл/каталог." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_DELETE_SELF>" +msgstr "B<IN_DELETE_SELF>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Watched file/directory was itself deleted. (This event also occurs if an " +"object is moved to another filesystem, since B<mv>(1) in effect copies the " +"file to the other filesystem and then deletes it from the original " +"filesystem.) In addition, an B<IN_IGNORED> event will subsequently be " +"generated for the watch descriptor." +msgstr "" +"Отслеживаемый файл/каталог был удалён (это событие также возникает, если " +"объект перемещён в другую файловую систему, так как B<mv>(1), фактически, " +"копирует файл в другую файловую систему и удаляет его из исходной). Также " +"затем будет создано событие B<IN_IGNORED> для дескриптора сторожка." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MODIFY> (+)" +msgstr "B<IN_MODIFY> (+)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File was modified (e.g., B<write>(2), B<truncate>(2))." +msgstr "Файл был изменён (например, B<write>(2), B<truncate>(2))." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MOVE_SELF>" +msgstr "B<IN_MOVE_SELF>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Watched file/directory was itself moved." +msgstr "Отслеживаемый файл/каталог был перемещён." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MOVED_FROM> (+)" +msgstr "B<IN_MOVED_FROM> (+)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generated for the directory containing the old filename when a file is " +"renamed." +msgstr "" +"При переименовании генерируется для каталога, содержащего старое имя файла." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MOVED_TO> (+)" +msgstr "B<IN_MOVED_TO> (+)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generated for the directory containing the new filename when a file is " +"renamed." +msgstr "" +"При переименовании генерируется для каталога, содержащего новое имя файла." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_OPEN> (*)" +msgstr "B<IN_OPEN> (*)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File or directory was opened." +msgstr "Файл или каталог был открыт." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Inotify monitoring is inode-based: when monitoring a file (but not when " +"monitoring the directory containing a file), an event can be generated for " +"activity on any link to the file (in the same or a different directory)." +msgstr "" +"Наблюдение inotify ведётся за inode: при наблюдении за файлом (но не когда " +"наблюдение ведётся за каталогом, содержащим файл) событие может " +"генерироваться при активности по любой ссылке на файл (находящейся в том же " +"или в другом каталоге)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "When monitoring a directory:" +msgstr "При наблюдении за каталогом:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"the events marked above with an asterisk (*) can occur both for the " +"directory itself and for objects inside the directory; and" +msgstr "" +"события, помеченные звёздочкой (*), могут возникать как для самого каталога, " +"так и для файлов в каталоге; и" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"the events marked with a plus sign (+) occur only for objects inside the " +"directory (not for the directory itself)." +msgstr "" +"события, помеченные знаком плюс (+), могут возникать только для объектов " +"внутри каталога (но не самого каталога)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<Note>: when monitoring a directory, events are not generated for the files " +"inside the directory when the events are performed via a pathname (i.e., a " +"link) that lies outside the monitored directory." +msgstr "" +"I<Замечание>: при слежении за каталогом события не генерируются для файлов " +"каталога, если событие возникает по пути (т. е., по ссылке), который " +"находится вне отслеживаемого каталога." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When events are generated for objects inside a watched directory, the " +"I<name> field in the returned I<inotify_event> structure identifies the name " +"of the file within the directory." +msgstr "" +"Когда события генерируются для объектов внутри отслеживаемого каталога, поле " +"I<name>, возвращаемое в структуре I<inotify_event>, хранит имя файла внутри " +"этого каталога." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<IN_ALL_EVENTS> macro is defined as a bit mask of all of the above " +"events. This macro can be used as the I<mask> argument when calling " +"B<inotify_add_watch>(2)." +msgstr "" +"Макрос B<IN_ALL_EVENTS> определён как битовая маска всех перечисленных выше " +"событий. Данный макрос можно использовать в качестве аргумента I<mask> в " +"вызове B<inotify_add_watch>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Two additional convenience macros are defined:" +msgstr "Дополнительно, два удобных макроса:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MOVE>" +msgstr "B<IN_MOVE>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Equates to B<IN_MOVED_FROM | IN_MOVED_TO>." +msgstr "То же, что и B<IN_MOVED_FROM | IN_MOVED_TO>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_CLOSE>" +msgstr "B<IN_CLOSE>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Equates to B<IN_CLOSE_WRITE | IN_CLOSE_NOWRITE>." +msgstr "То же, что и B<IN_CLOSE_WRITE | IN_CLOSE_NOWRITE>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The following further bits can be specified in I<mask> when calling " +"B<inotify_add_watch>(2):" +msgstr "" +"Также, при вызове B<inotify_add_watch>(2) в I<mask> могут быть указаны " +"следующие биты:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_DONT_FOLLOW> (since Linux 2.6.15)" +msgstr "B<IN_DONT_FOLLOW> (начиная с Linux 2.6.15)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Don't dereference I<pathname> if it is a symbolic link." +msgstr "Не разыменовывать I<pathname>, если это символическая ссылка." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_EXCL_UNLINK> (since Linux 2.6.36)" +msgstr "B<IN_EXCL_UNLINK> (начиная с Linux 2.6.36)" + +#. commit 8c1934c8d70b22ca8333b216aec6c7d09fdbd6a6 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"By default, when watching events on the children of a directory, events are " +"generated for children even after they have been unlinked from the " +"directory. This can result in large numbers of uninteresting events for " +"some applications (e.g., if watching I</tmp>, in which many applications " +"create temporary files whose names are immediately unlinked). Specifying " +"B<IN_EXCL_UNLINK> changes the default behavior, so that events are not " +"generated for children after they have been unlinked from the watched " +"directory." +msgstr "" +"По умолчанию, при слежении за событиями для потомков каталога, события " +"генерируются для потомков даже после того, как они будут удалены из " +"каталога. Это может привести к большому количеству ненужных для приложения " +"событий (например, если следить за I</tmp>, в котором многие приложения " +"создают и сразу удаляют временные файлы). Указание B<IN_EXCL_UNLINK> " +"изменяет поведение по умолчанию, и такие события не генерируются для " +"потомков после удаления из отслеживаемого каталога." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MASK_ADD>" +msgstr "B<IN_MASK_ADD>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If a watch instance already exists for the filesystem object corresponding " +"to I<pathname>, add (OR) the events in I<mask> to the watch mask (instead of " +"replacing the mask); the error B<EINVAL> results if B<IN_MASK_CREATE> is " +"also specified." +msgstr "" +"Если экземпляр слежения уже существует для объекта файловой системы " +"соответствующего I<pathname>, то выполнять добавление (OR) событий в I<mask> " +"к маске слежения (вместо замены маски); если также указан B<IN_MASK_CREATE>, " +"то возвращается ошибка B<EINVAL>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ONESHOT>" +msgstr "B<IN_ONESHOT>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Monitor the filesystem object corresponding to I<pathname> for one event, " +"then remove from watch list." +msgstr "" +"Отслеживать объект файловой системы, соответствующий I<pathname> до одного " +"события, затем удалить объект из списка слежения." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ONLYDIR> (since Linux 2.6.15)" +msgstr "B<IN_ONLYDIR> (начиная с Linux 2.6.15)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Watch I<pathname> only if it is a directory; the error B<ENOTDIR> results if " +"I<pathname> is not a directory. Using this flag provides an application " +"with a race-free way of ensuring that the monitored object is a directory." +msgstr "" +"Следить за I<pathname>, только если это каталог; если I<pathname> не " +"является каталогом, то возвращается ошибка B<ENOTDIR>. Этот флаг " +"предоставляет приложению бессостязательный способ убедиться, что " +"отслеживаемый объект — каталог." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MASK_CREATE> (since Linux 4.18)" +msgstr "B<IN_MASK_CREATE> (начиная с Linux 4.18)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Watch I<pathname> only if it does not already have a watch associated with " +"it; the error B<EEXIST> results if I<pathname> is already being watched." +msgstr "" +"Следить за I<pathname> только, если за ним никто не следит; если уже " +"выполняется слежение за I<pathname>, то возвращается ошибка B<EEXIST>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Using this flag provides an application with a way of ensuring that new " +"watches do not modify existing ones. This is useful because multiple paths " +"may refer to the same inode, and multiple calls to B<inotify_add_watch>(2) " +"without this flag may clobber existing watch masks." +msgstr "" +"С помощью этого флага приложение может быть уверено, что новые слежения не " +"изменят существующих. Это полезно, так как несколько путей могут ссылаться " +"на одну иноду, а несколько вызовов B<inotify_add_watch>(2) без этого флага " +"могут затереть существующие маски слежения." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The following bits may be set in the I<mask> field returned by B<read>(2):" +msgstr "" +"Следующие биты могут быть установлены в поле I<mask> при возврате из " +"B<read>(2):" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_IGNORED>" +msgstr "B<IN_IGNORED>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Watch was removed explicitly (B<inotify_rm_watch>(2)) or automatically " +"(file was deleted, or filesystem was unmounted). See also BUGS." +msgstr "" +"Слежение было снято явно (B<inotify_rm_watch>(2)) или автоматически (файл " +"был удалён или размонтирована файловая система). Также смотрите ДЕФЕКТЫ." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ISDIR>" +msgstr "B<IN_ISDIR>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Subject of this event is a directory." +msgstr "Объект этого события — каталог." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_Q_OVERFLOW>" +msgstr "B<IN_Q_OVERFLOW>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Event queue overflowed (I<wd> is -1 for this event)." +msgstr "" +"Переполнена очередь событий (для этого события значение I<wd> равно -1)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_UNMOUNT>" +msgstr "B<IN_UNMOUNT>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Filesystem containing watched object was unmounted. In addition, an " +"B<IN_IGNORED> event will subsequently be generated for the watch descriptor." +msgstr "" +"Файловая система, содержащая отслеживаемый объект, была размонтирована. " +"Также, будет сгенерировано событие B<IN_IGNORED> для дескриптора сторожка." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Examples" +msgstr "Примеры" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suppose an application is watching the directory I<dir> and the file I<dir/" +"myfile> for all events. The examples below show some events that will be " +"generated for these two objects." +msgstr "" +"Предположим, приложение следит за всеми событиями для каталога I<dir> и " +"файла I<dir/myfile>. В примере ниже показаны некоторые события, которые " +"будут сгенерированы для этих двух объектов." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "fd = open(\"dir/myfile\", O_RDWR);" +msgstr "fd = open(\"dir/myfile\", O_RDWR);" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_OPEN> events for both I<dir> and I<dir/myfile>." +msgstr "Генерируется событие B<IN_OPEN> и для I<dir>, и для I<dir/myfile>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "read(fd, buf, count);" +msgstr "read(fd, buf, count);" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_ACCESS> events for both I<dir> and I<dir/myfile>." +msgstr "Генерируется событие B<IN_ACCESS> и для I<dir>, и для I<dir/myfile>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "write(fd, buf, count);" +msgstr "write(fd, buf, count);" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_MODIFY> events for both I<dir> and I<dir/myfile>." +msgstr "Генерируется событие B<IN_MODIFY> и для I<dir>, и для I<dir/myfile>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "fchmod(fd, mode);" +msgstr "fchmod(fd, mode);" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_ATTRIB> events for both I<dir> and I<dir/myfile>." +msgstr "Генерируется событие B<IN_ATTRIB> и для I<dir>, и для I<dir/myfile>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "close(fd);" +msgstr "close(fd);" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_CLOSE_WRITE> events for both I<dir> and I<dir/myfile>." +msgstr "" +"Генерируется событие B<IN_CLOSE_WRITE> и для I<dir>, и для I<dir/myfile>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suppose an application is watching the directories I<dir1> and I<dir2>, and " +"the file I<dir1/myfile>. The following examples show some events that may " +"be generated." +msgstr "" +"Предположим, приложение следит за всеми событиями для каталогов I<dir1> и " +"I<dir2> и файла I<dir1/myfile>. В примере ниже показаны некоторые события, " +"которые могут быть сгенерированы." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "link(\"dir1/myfile\", \"dir2/new\");" +msgstr "link(\"dir1/myfile\", \"dir2/new\");" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates an B<IN_ATTRIB> event for I<myfile> and an B<IN_CREATE> event for " +"I<dir2>." +msgstr "" +"Генерируется событие B<IN_ATTRIB> для I<myfile> и событие B<IN_CREATE> для " +"I<dir2>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "rename(\"dir1/myfile\", \"dir2/myfile\");" +msgstr "rename(\"dir1/myfile\", \"dir2/myfile\");" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates an B<IN_MOVED_FROM> event for I<dir1>, an B<IN_MOVED_TO> event for " +"I<dir2>, and an B<IN_MOVE_SELF> event for I<myfile>. The B<IN_MOVED_FROM> " +"and B<IN_MOVED_TO> events will have the same I<cookie> value." +msgstr "" +"Генерируется событие B<IN_MOVED_FROM> для I<dir1>, событие B<IN_MOVED_TO> " +"для I<dir2> и событие B<IN_MOVE_SELF> для I<myfile>. События " +"B<IN_MOVED_FROM> и B<IN_MOVED_TO> будут содержать одинаковое значение " +"I<cookie>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suppose that I<dir1/xx> and I<dir2/yy> are (the only) links to the same " +"file, and an application is watching I<dir1>, I<dir2>, I<dir1/xx>, and " +"I<dir2/yy>. Executing the following calls in the order given below will " +"generate the following events:" +msgstr "" +"Предположим, что I<dir1/xx> и I<dir2/yy> только ссылки на один файл и " +"приложение следит за I<dir1>, I<dir2>, I<dir1/xx> и I<dir2/yy>. При " +"выполнение следующих вызовов в порядке, указанном ниже, будут сгенерированы " +"следующие события:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "unlink(\"dir2/yy\");" +msgstr "unlink(\"dir2/yy\");" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates an B<IN_ATTRIB> event for I<xx> (because its link count changes) " +"and an B<IN_DELETE> event for I<dir2>." +msgstr "" +"Генерируется событие B<IN_ATTRIB> для I<xx> (так как изменился его счётчик " +"ссылок) и событие B<IN_DELETE> для I<dir2>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "unlink(\"dir1/xx\");" +msgstr "unlink(\"dir1/xx\");" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates B<IN_ATTRIB>, B<IN_DELETE_SELF>, and B<IN_IGNORED> events for " +"I<xx>, and an B<IN_DELETE> event for I<dir1>." +msgstr "" +"Генерируется событие B<IN_ATTRIB>, B<IN_DELETE_SELF> и B<IN_IGNORED> для " +"I<xx> и событие B<IN_DELETE> для I<dir1>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suppose an application is watching the directory I<dir> and (the empty) " +"directory I<dir/subdir>. The following examples show some events that may " +"be generated." +msgstr "" +"Предположим, приложение следит за каталогом I<dir> и пустым каталогом I<dir/" +"subdir>. В примере ниже показаны некоторые события, которые могут быть " +"сгенерированы." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "mkdir(\"dir/new\", mode);" +msgstr "mkdir(\"dir/new\", mode);" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates an B<IN_CREATE | IN_ISDIR> event for I<dir>." +msgstr "Генерируется событие B<IN_CREATE | IN_ISDIR> для I<dir>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "rmdir(\"dir/subdir\");" +msgstr "rmdir(\"dir/subdir\");" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates B<IN_DELETE_SELF> and B<IN_IGNORED> events for I<subdir>, and an " +"B<IN_DELETE | IN_ISDIR> event for I<dir>." +msgstr "" +"Генерируются события B<IN_DELETE_SELF> и B<IN_IGNORED> для I<subdir> и " +"событие B<IN_DELETE | IN_ISDIR> для I<dir>." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "/proc interfaces" +msgstr "Интерфейс /proc" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The following interfaces can be used to limit the amount of kernel memory " +"consumed by inotify:" +msgstr "" +"Для ограничения потребления inotify памяти ядра, можно использовать " +"следующие интерфейсы:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I</proc/sys/fs/inotify/max_queued_events>" +msgstr "I</proc/sys/fs/inotify/max_queued_events>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The value in this file is used when an application calls B<inotify_init>(2) " +"to set an upper limit on the number of events that can be queued to the " +"corresponding inotify instance. Events in excess of this limit are dropped, " +"but an B<IN_Q_OVERFLOW> event is always generated." +msgstr "" +"Значение в этом файле используется когда приложение вызывает " +"B<inotify_init>(2) для установки верхнего порога количества событий, которые " +"могут поместиться в очередь соответствующего экземпляра inotify. События, " +"превысившие это ограничение, отбрасываются, но событие B<IN_Q_OVERFLOW> " +"генерируется всегда." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I</proc/sys/fs/inotify/max_user_instances>" +msgstr "I</proc/sys/fs/inotify/max_user_instances>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This specifies an upper limit on the number of inotify instances that can be " +"created per real user ID." +msgstr "" +"В этом файле задаётся ограничение на количество экземпляров inotify, которые " +"могут быть созданы для одного реального идентификатора пользователя." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I</proc/sys/fs/inotify/max_user_watches>" +msgstr "I</proc/sys/fs/inotify/max_user_watches>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This specifies an upper limit on the number of watches that can be created " +"per real user ID." +msgstr "" +"В этом файле задаётся ограничение на количество сторожков, которые могут " +"быть созданы для одного реального идентификатора пользователя." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "STANDARDS" +msgstr "СТАНДАРТЫ" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "Linux." +msgstr "Linux." + +#. type: SH +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "HISTORY" +msgstr "ИСТОРИЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "Inotify was merged into the 2.6.13 Linux kernel. The required library " +#| "interfaces were added to glibc in version 2.4. (B<IN_DONT_FOLLOW>, " +#| "B<IN_MASK_ADD>, and B<IN_ONLYDIR> were added in glibc version 2.5.)" +msgid "" +"Inotify was merged into Linux 2.6.13. The required library interfaces were " +"added in glibc 2.4. (B<IN_DONT_FOLLOW>, B<IN_MASK_ADD>, and B<IN_ONLYDIR> " +"were added in glibc 2.5.)" +msgstr "" +"Программный интерфейс inotify был добавлен в ядро Linux версии 2.6.13. " +"Необходимые библиотечные интерфейсы добавлены в glibc версии 2.4 " +"(B<IN_DONT_FOLLOW>, B<IN_MASK_ADD> и B<IN_ONLYDIR> добавлены в glibc версии " +"2.5)." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NOTES" +msgstr "ЗАМЕЧАНИЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Inotify file descriptors can be monitored using B<select>(2), B<poll>(2), " +"and B<epoll>(7). When an event is available, the file descriptor indicates " +"as readable." +msgstr "" +"За файловыми дескрипторами inotify можно наблюдать с помощью B<select>(2), " +"B<poll>(2), и B<epoll>(7). Когда возникает событие, файловый дескриптор " +"указывает на возможность чтения." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Since Linux 2.6.25, signal-driven I/O notification is available for inotify " +"file descriptors; see the discussion of B<F_SETFL> (for setting the " +"B<O_ASYNC> flag), B<F_SETOWN>, and B<F_SETSIG> in B<fcntl>(2). The " +"I<siginfo_t> structure (described in B<sigaction>(2)) that is passed to the " +"signal handler has the following fields set: I<si_fd> is set to the inotify " +"file descriptor number; I<si_signo> is set to the signal number; I<si_code> " +"is set to B<POLL_IN>; and B<POLLIN> is set in I<si_band>." +msgstr "" +"Начиная с Linux 2.6.25, для файловых дескрипторов inotify стали доступны " +"уведомления ввода-вывода посредством сигналов; смотрите обсуждение " +"B<F_SETFL> (для установки флага B<O_ASYNC>), B<F_SETOWN> и B<F_SETSIG> в " +"B<fcntl>(2). Структура I<siginfo_t> (описана в B<sigaction>(2)), " +"передаваемая обработчику сигнала, содержит следующие настройки полей: в " +"I<si_fd> указывается номер файлового дескриптора inotify; в I<si_signo> " +"указывается номер сигнала; в I<si_code> указывается B<POLL_IN>; в I<si_band> " +"указывается B<POLLIN>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If successive output inotify events produced on the inotify file descriptor " +"are identical (same I<wd>, I<mask>, I<cookie>, and I<name>), then they are " +"coalesced into a single event if the older event has not yet been read (but " +"see BUGS). This reduces the amount of kernel memory required for the event " +"queue, but also means that an application can't use inotify to reliably " +"count file events." +msgstr "" +"Если последующие события inotify, выводимые в файловый дескриптор inotify, " +"одинаковы (содержат одинаковые значения I<wd>, I<mask>, I<cookie> и " +"I<name>), то они сливаются в одно событие, если самое старое событие ещё не " +"прочитано (но смотрите ДЕФЕКТЫ). Это сокращает требуемое количество памяти " +"ядра для очереди событий, но также означает, что приложение не может " +"использовать inotify для надёжного подсчёта файловых событий." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The events returned by reading from an inotify file descriptor form an " +"ordered queue. Thus, for example, it is guaranteed that when renaming from " +"one directory to another, events will be produced in the correct order on " +"the inotify file descriptor." +msgstr "" +"События, возвращаемые при чтении из файлового дескриптора inotify, формируют " +"упорядоченную очередь. То есть, например, это гарантирует, что при " +"переименовании одного каталога в другой, события в файловом дескрипторе " +"inotify будут созданы в правильном порядке." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "The set of watch descriptors that is being monitored via an inotify file " +#| "descriptor can be viewed via the entry for the inotify file descriptor in " +#| "the process's I</proc/[pid]/fdinfo> directory. See B<proc>(5) for " +#| "further details. The B<FIONREAD> B<ioctl>(2) returns the number of " +#| "bytes available to read from an inotify file descriptor." +msgid "" +"The set of watch descriptors that is being monitored via an inotify file " +"descriptor can be viewed via the entry for the inotify file descriptor in " +"the process's I</proc/>pidI</fdinfo> directory. See B<proc>(5) for further " +"details. The B<FIONREAD> B<ioctl>(2) returns the number of bytes available " +"to read from an inotify file descriptor." +msgstr "" +"Набор наблюдаемых дескрипторов, которые отслеживаются через файловый " +"дескриптор inotify, можно увидеть из записи для файлового дескриптора " +"inotify в каталоге процесса I</proc/[pid]/fdinfo>. Дополнительную информацию " +"смотрите в B<proc>(5). Вызов B<FIONREAD> B<ioctl>(2) возвращает количество " +"байт, доступных для чтения из файлового дескриптора inotify." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Limitations and caveats" +msgstr "Ограничения и подводные камни" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The inotify API provides no information about the user or process that " +"triggered the inotify event. In particular, there is no easy way for a " +"process that is monitoring events via inotify to distinguish events that it " +"triggers itself from those that are triggered by other processes." +msgstr "" +"Программный интерфейс inotify не предоставляет информацию о пользователе или " +"процессе, из-за которого возникло событие. В частности, для процесса, " +"отслеживающего события через inotify, нет простого способа определить, " +"возникли события из-за его действий или из-за действий других процессов." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Inotify reports only events that a user-space program triggers through the " +"filesystem API. As a result, it does not catch remote events that occur on " +"network filesystems. (Applications must fall back to polling the filesystem " +"to catch such events.) Furthermore, various pseudo-filesystems such as I</" +"proc>, I</sys>, and I</dev/pts> are not monitorable with inotify." +msgstr "" +"Inotify сообщает только о событиях, которые возникли из-за пользовательских " +"программ, использовавших программный интерфейс файловой системы. То есть, не " +"возникает событий для файловых систем, доступных по сети (приложения должны " +"использовать старый метод опроса файловой системы для слежения за такими " +"событиями). Кроме того, различные псевдо-файловый системы, такие как I</" +"proc>, I</sys> и I</dev/pts>, не отслеживаются через inotify." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The inotify API does not report file accesses and modifications that may " +"occur because of B<mmap>(2), B<msync>(2), and B<munmap>(2)." +msgstr "" +"Программный интерфейс inotify не сообщает о доступе и изменениях, которые " +"могут произойти из-за B<mmap>(2), B<msync>(2) и B<munmap>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The inotify API identifies affected files by filename. However, by the time " +"an application processes an inotify event, the filename may already have " +"been deleted or renamed." +msgstr "" +"Программный интерфейс inotify в качестве идентификаторов объектов использует " +"имена файлов. Однако, в момент обработки приложением события inotify, имя " +"файла может быть уже удалено или переименовано." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The inotify API identifies events via watch descriptors. It is the " +"application's responsibility to cache a mapping (if one is needed) between " +"watch descriptors and pathnames. Be aware that directory renamings may " +"affect multiple cached pathnames." +msgstr "" +"Программный интерфейс inotify различает события по их дескрипторам " +"сторожков. Приложение само должно кэшировать сопоставление (если нужно) " +"дескрипторов сторожков и имён. Имейте в виду, что переименование каталога " +"может повлиять на несколько кэшированных путей." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Inotify monitoring of directories is not recursive: to monitor " +"subdirectories under a directory, additional watches must be created. This " +"can take a significant amount time for large directory trees." +msgstr "" +"Отслеживание каталогов через inotify ведётся не рекурсивно: чтобы " +"отслеживать подкаталоги, нужно создать дополнительные сторожки. Это может " +"занять много времени при большом дереве каталога." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If monitoring an entire directory subtree, and a new subdirectory is created " +"in that tree or an existing directory is renamed into that tree, be aware " +"that by the time you create a watch for the new subdirectory, new files (and " +"subdirectories) may already exist inside the subdirectory. Therefore, you " +"may want to scan the contents of the subdirectory immediately after adding " +"the watch (and, if desired, recursively add watches for any subdirectories " +"that it contains)." +msgstr "" +"Если отслеживается полное дерево каталога и создаётся новый каталог в этом " +"дереве или существующий каталог переименовывается в этом дереве, учтите, что " +"на момент создания сторожка за новым подкаталогом, в подкаталоге могут уже " +"существовать новые файлы (и подкаталоги). Поэтому вам может потребоваться " +"сканировать содержимое подкаталога сразу после добавления сторожка (и, если " +"нужно, рекурсивно добавить сторожки для всех подкаталогов, которые в нём " +"есть)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that the event queue can overflow. In this case, events are lost. " +"Robust applications should handle the possibility of lost events " +"gracefully. For example, it may be necessary to rebuild part or all of the " +"application cache. (One simple, but possibly expensive, approach is to " +"close the inotify file descriptor, empty the cache, create a new inotify " +"file descriptor, and then re-create watches and cache entries for the " +"objects to be monitored.)" +msgstr "" +"Заметим, что очередь событий может переполниться. В этом случае события " +"теряются. Корректные приложения должны учитывать возможность пропажи " +"событий. Например, может потребоваться перестроить часть или весь кэш " +"приложения (один простой, но, возможно, затратный способ, это закрыть " +"файловый дескриптор inotify, опустошить кэш, создать новый файловый " +"дескриптор inotify и затем пересоздать сторожки и записи в кэше для " +"отслеживаемых объектов)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If a filesystem is mounted on top of a monitored directory, no event is " +"generated, and no events are generated for objects immediately under the new " +"mount point. If the filesystem is subsequently unmounted, events will " +"subsequently be generated for the directory and the objects it contains." +msgstr "" +"Если файловая система смонтирована поверх отслеживаемого каталога, то " +"событие не генерируются, а также не генерируются события для объектов, " +"находящихся в новой точке монтирования на первом уровне. Если в дальнейшем " +"файловая система отмонтируется, то события начнут генерироваться для " +"каталога и содержащихся в нём объектов." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Dealing with rename() events" +msgstr "Работа с событиями rename()" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As noted above, the B<IN_MOVED_FROM> and B<IN_MOVED_TO> event pair that is " +"generated by B<rename>(2) can be matched up via their shared cookie value. " +"However, the task of matching has some challenges." +msgstr "" +"Как указывалось выше, из событий B<IN_MOVED_FROM> и B<IN_MOVED_TO>, " +"генерируемых B<rename>(2), можно определить пару по их одинаковому значению " +"cookie. Однако, с этой задачей есть несколько проблем." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"These two events are usually consecutive in the event stream available when " +"reading from the inotify file descriptor. However, this is not guaranteed. " +"If multiple processes are triggering events for monitored objects, then (on " +"rare occasions) an arbitrary number of other events may appear between the " +"B<IN_MOVED_FROM> and B<IN_MOVED_TO> events. Furthermore, it is not " +"guaranteed that the event pair is atomically inserted into the queue: there " +"may be a brief interval where the B<IN_MOVED_FROM> has appeared, but the " +"B<IN_MOVED_TO> has not." +msgstr "" +"Эти два события, обычно, стоят друг за другом в потоке событий, если читать " +"из файлового дескриптора inotify. Однако, это не гарантируется. Если " +"несколько процессов создают события для отслеживаемых объектов, то (в редких " +"случаях) произвольное количество других событий может появиться между " +"событиями B<IN_MOVED_FROM> и B<IN_MOVED_TO>. Кроме того, не гарантируется, " +"что пара событий вставляется в очередь атомарно: может существовать короткий " +"интервал, в котором B<IN_MOVED_FROM> уже появилось, а B<IN_MOVED_TO> ещё нет." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Matching up the B<IN_MOVED_FROM> and B<IN_MOVED_TO> event pair generated by " +"B<rename>(2) is thus inherently racy. (Don't forget that if an object is " +"renamed outside of a monitored directory, there may not even be an " +"B<IN_MOVED_TO> event.) Heuristic approaches (e.g., assume the events are " +"always consecutive) can be used to ensure a match in most cases, but will " +"inevitably miss some cases, causing the application to perceive the " +"B<IN_MOVED_FROM> and B<IN_MOVED_TO> events as being unrelated. If watch " +"descriptors are destroyed and re-created as a result, then those watch " +"descriptors will be inconsistent with the watch descriptors in any pending " +"events. (Re-creating the inotify file descriptor and rebuilding the cache " +"may be useful to deal with this scenario.)" +msgstr "" +"Соответствие B<IN_MOVED_FROM> и B<IN_MOVED_TO> паре событий, сгенерированных " +"B<rename>(2), по сути, просто (не забудьте, что если объект " +"переименовывается вне отслеживаемого каталога, то может не быть даже события " +"B<IN_MOVED_TO>). Можно использовать эвристические предположения (например, " +"что события всегда следуют друг за другом), что работает в большинстве " +"случаев, но неминуемо не сработает в некоторых случаях, в которых приложение " +"посчитает события B<IN_MOVED_FROM> и B<IN_MOVED_TO> несвязными. Если в " +"результате дескрипторы сторожков будут уничтожены и пересозданы, то такие " +"дескрипторы будут несогласованны с дескрипторами сторожков для любых " +"ожидающих событий (пересоздание файлового дескриптора inotify и пересборка " +"кэша может быть полезна в этом случае)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "Applications should also allow for the possibility that the " +#| "B<IN_MOVED_FROM> event was the last event that could fit in the buffer " +#| "returned by the current call to B<read>(2), and the accompanying " +#| "B<IN_MOVED_TO> event might be fetched only on the next B<read>(2), which " +#| "should be done with a (small) timeout to allow for the fact that " +#| "insertion of the B<IN_MOVED_FROM>-B<IN_MOVED_TO> event pair is not " +#| "atomic, and also the possibility that there may not be any B<IN_MOVED_TO> " +#| "event." +msgid "" +"Applications should also allow for the possibility that the B<IN_MOVED_FROM> " +"event was the last event that could fit in the buffer returned by the " +"current call to B<read>(2), and the accompanying B<IN_MOVED_TO> event might " +"be fetched only on the next B<read>(2), which should be done with a (small) " +"timeout to allow for the fact that insertion of the " +"B<IN_MOVED_FROM>+B<IN_MOVED_TO> event pair is not atomic, and also the " +"possibility that there may not be any B<IN_MOVED_TO> event." +msgstr "" +"Также приложения должны учитывать возможность того, что событие " +"B<IN_MOVED_FROM> — последнее событие, которое попало в буфер, возвращаемый " +"текущим вызовом B<read>(2), и сопутствующее событие B<IN_MOVED_TO> может " +"быть получено только при следующем чтении B<read>(2), которое должно быть " +"выполнено с (коротким) промежутком, позволяющим фактическую не атомарную " +"вставку пары событий B<IN_MOVED_FROM>-B<IN_MOVED_TO>, и также возможность " +"того, что может отсутствовать событие B<IN_MOVED_TO>." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "BUGS" +msgstr "ДЕФЕКТЫ" + +#. commit 820c12d5d6c0890bc93dd63893924a13041fdc35 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Before Linux 3.19, B<fallocate>(2) did not create any inotify events. " +"Since Linux 3.19, calls to B<fallocate>(2) generate B<IN_MODIFY> events." +msgstr "" +"До Linux 3.19, B<fallocate>(2) не создавал события inotify. Начиная с Linux " +"3.19, вызов B<fallocate>(2) генерирует событие B<IN_MODIFY>." + +#. FIXME . kernel commit 611da04f7a31b2208e838be55a42c7a1310ae321 +#. implies that unmount events were buggy since Linux 2.6.11 to Linux 2.6.36 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "In kernels before 2.6.16, the B<IN_ONESHOT> I<mask> flag does not work." +msgid "Before Linux 2.6.16, the B<IN_ONESHOT> I<mask> flag does not work." +msgstr "В ядрах до 2.6.16 флаг B<IN_ONESHOT> в I<mask> не работает." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As originally designed and implemented, the B<IN_ONESHOT> flag did not cause " +"an B<IN_IGNORED> event to be generated when the watch was dropped after one " +"event. However, as an unintended effect of other changes, since Linux " +"2.6.36, an B<IN_IGNORED> event is generated in this case." +msgstr "" +"В первоначальной задумке и реализации флаг B<IN_ONESHOT> не приводил к " +"генерации события B<IN_IGNORED>, если наблюдение отменялось после одного " +"события. Однако, как непреднамеренный эффект других изменений, начиная с " +"Linux 2.6.36, событие B<IN_IGNORED> в этом случае генерируется." + +#. commit 1c17d18e3775485bf1e0ce79575eb637a94494a2 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "Before kernel 2.6.25, the kernel code that was intended to coalesce " +#| "successive identical events (i.e., the two most recent events could " +#| "potentially be coalesced if the older had not yet been read) instead " +#| "checked if the most recent event could be coalesced with the I<oldest> " +#| "unread event." +msgid "" +"Before Linux 2.6.25, the kernel code that was intended to coalesce " +"successive identical events (i.e., the two most recent events could " +"potentially be coalesced if the older had not yet been read) instead " +"checked if the most recent event could be coalesced with the I<oldest> " +"unread event." +msgstr "" +"До ядра версии 2.6.25, код ядра, который отвечал за объединение последующих " +"одинаковых событий (т. е., два самых новых события могли быть объединены, " +"если старое событие ещё не было прочитано), вместо этого проверял, можно ли " +"объединить самое новое событие с I<самым старым> непрочитанным событием." + +#. FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=77111 +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "When a watch descriptor is removed by calling B<inotify_rm_watch>(2) (or " +#| "because a watch file is deleted or the filesystem that contains it is " +#| "unmounted), any pending unread events for that watch descriptor remain " +#| "available to read. As watch descriptors are subsequently allocated with " +#| "B<inotify_add_watch>(2), the kernel cycles through the range of possible " +#| "watch descriptors (0 to B<INT_MAX>) incrementally. When allocating a " +#| "free watch descriptor, no check is made to see whether that watch " +#| "descriptor number has any pending unread events in the inotify queue. " +#| "Thus, it can happen that a watch descriptor is reallocated even when " +#| "pending unread events exist for a previous incarnation of that watch " +#| "descriptor number, with the result that the application might then read " +#| "those events and interpret them as belonging to the file associated with " +#| "the newly recycled watch descriptor. In practice, the likelihood of " +#| "hitting this bug may be extremely low, since it requires that an " +#| "application cycle through B<INT_MAX> watch descriptors, release a watch " +#| "descriptor while leaving unread events for that watch descriptor in the " +#| "queue, and then recycle that watch descriptor. For this reason, and " +#| "because there have been no reports of the bug occurring in real-world " +#| "applications, as of Linux 3.15, no kernel changes have yet been made to " +#| "eliminate this possible bug." +msgid "" +"When a watch descriptor is removed by calling B<inotify_rm_watch>(2) (or " +"because a watch file is deleted or the filesystem that contains it is " +"unmounted), any pending unread events for that watch descriptor remain " +"available to read. As watch descriptors are subsequently allocated with " +"B<inotify_add_watch>(2), the kernel cycles through the range of possible " +"watch descriptors (1 to B<INT_MAX>) incrementally. When allocating a free " +"watch descriptor, no check is made to see whether that watch descriptor " +"number has any pending unread events in the inotify queue. Thus, it can " +"happen that a watch descriptor is reallocated even when pending unread " +"events exist for a previous incarnation of that watch descriptor number, " +"with the result that the application might then read those events and " +"interpret them as belonging to the file associated with the newly recycled " +"watch descriptor. In practice, the likelihood of hitting this bug may be " +"extremely low, since it requires that an application cycle through " +"B<INT_MAX> watch descriptors, release a watch descriptor while leaving " +"unread events for that watch descriptor in the queue, and then recycle that " +"watch descriptor. For this reason, and because there have been no reports " +"of the bug occurring in real-world applications, as of Linux 3.15, no kernel " +"changes have yet been made to eliminate this possible bug." +msgstr "" +"Когда дескриптор сторожка удаляется вызовом B<inotify_rm_watch>(2) (или из-" +"за удаления отслеживаемого файла, или размонтирования содержащей его " +"файловой системы), все ожидающие непрочитанные события для этого дескриптора " +"сторожка остаются доступными для чтения. Так как дескрипторы сторожков в " +"дальнейшем циклически выделяются B<inotify_add_watch>(2), ядро поступательно " +"проходит через диапазон возможных дескрипторов сторожков (от 0 до " +"B<INT_MAX>). При выделении свободного дескриптора сторожка для выбранного " +"номера не производится проверка того, есть ли какие-то ожидающие " +"непрочитанные события в очереди inotify с таким номером или нет. То есть " +"может случиться так, что дескриптор сторожка выделяется повторно даже когда " +"существуют ожидающие непрочитанные события, оставшиеся от предыдущего " +"выделения дескриптора сторожка с тем же номером; в результате приложение " +"может прочесть эти события и посчитать их как принадлежащие файлу, " +"связанному с новым повторно задействованным дескриптором сторожка. На " +"практике, вероятность столкновения с этой ошибкой может быть чрезвычайно " +"низка, так как для этого требуется, чтобы приложения циклически перебрало " +"все B<INT_MAX> дескрипторов сторожков, освободило дескриптор сторожка и " +"оставило непрочитанные события этого дескриптора сторожка в очереди, а затем " +"повторно задействовало этот дескриптор сторожка. По этой причине и из-за " +"того, что ещё никто не сообщал об этой ошибке в реальности, на момент " +"актуальности Linux 3.15, в ядре ничего не было сделано для того, чтобы " +"устранить этот дефект." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "EXAMPLES" +msgstr "ПРИМЕРЫ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "The following program demonstrates the usage of the inotify API. It " +#| "marks the directories passed as a command-line arguments and waits for " +#| "events of type B<IN_OPEN>, B<IN_CLOSE_NOWRITE> and B<IN_CLOSE_WRITE>." +msgid "" +"The following program demonstrates the usage of the inotify API. It marks " +"the directories passed as a command-line arguments and waits for events of " +"type B<IN_OPEN>, B<IN_CLOSE_NOWRITE>, and B<IN_CLOSE_WRITE>." +msgstr "" +"Следующая программа демонстрирует использование программного интерфейса " +"inotify. Она помечает каталоги, переданной в аргументах командной строки, и " +"ждёт событий с типом B<IN_OPEN>, B<IN_CLOSE_NOWRITE> и B<IN_CLOSE_WRITE>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The following output was recorded while editing the file I</home/user/temp/" +"foo> and listing directory I</tmp>. Before the file and the directory were " +"opened, B<IN_OPEN> events occurred. After the file was closed, an " +"B<IN_CLOSE_WRITE> event occurred. After the directory was closed, an " +"B<IN_CLOSE_NOWRITE> event occurred. Execution of the program ended when the " +"user pressed the ENTER key." +msgstr "" +"Следующий вывод был записан при редактировании файла I</home/user/temp/foo> " +"и просмотра каталога I</tmp>. Перед открытием файла и каталога произошли " +"события B<IN_OPEN>. После закрытия файла произошло событие " +"B<IN_CLOSE_WRITE>. После закрытия каталога произошло событие " +"B<IN_CLOSE_NOWRITE>. Выполнение программы закончилось после нажатия " +"пользователем клавиши ENTER." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Example output" +msgstr "Пример вывода" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "" +#| "$ B<./a.out /tmp /home/user/temp>\n" +#| "Press enter key to terminate.\n" +#| "Listening for events.\n" +#| "IN_OPEN: /home/user/temp/foo [file]\n" +#| "IN_CLOSE_WRITE: /home/user/temp/foo [file]\n" +#| "IN_OPEN: /tmp/ [directory]\n" +#| "IN_CLOSE_NOWRITE: /tmp/ [directory]\n" +msgid "" +"$ B<./a.out /tmp /home/user/temp>\n" +"Press enter key to terminate.\n" +"Listening for events.\n" +"IN_OPEN: /home/user/temp/foo [file]\n" +"IN_CLOSE_WRITE: /home/user/temp/foo [file]\n" +"IN_OPEN: /tmp/ [directory]\n" +"IN_CLOSE_NOWRITE: /tmp/ [directory]\n" +"\\&\n" +"Listening for events stopped.\n" +msgstr "" +"$ B<./a.out /tmp /home/user/temp>\n" +"Нажмите ENTER для завершения работы.\n" +"Ожидание событий.\n" +"IN_OPEN: /home/user/temp/foo [файл]\n" +"IN_CLOSE_WRITE: /home/user/temp/foo [файл]\n" +"IN_OPEN: /tmp/ [каталог]\n" +"IN_CLOSE_NOWRITE: /tmp/ [каталог]\n" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Program source" +msgstr "Исходный код программы" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +#, no-wrap +msgid "" +"#include E<lt>errno.hE<gt>\n" +"#include E<lt>poll.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/inotify.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" +"#include E<lt>string.hE<gt>\n" +"\\&\n" +"/* Read all available inotify events from the file descriptor \\[aq]fd\\[aq].\n" +" wd is the table of watch descriptors for the directories in argv.\n" +" argc is the length of wd and argv.\n" +" argv is the list of watched directories.\n" +" Entry 0 of wd and argv is unused. */\n" +"\\&\n" +"static void\n" +"handle_events(int fd, int *wd, int argc, char* argv[])\n" +"{\n" +" /* Some systems cannot read integer variables if they are not\n" +" properly aligned. On other systems, incorrect alignment may\n" +" decrease performance. Hence, the buffer used for reading from\n" +" the inotify file descriptor should have the same alignment as\n" +" struct inotify_event. */\n" +"\\&\n" +" char buf[4096]\n" +" __attribute__ ((aligned(__alignof__(struct inotify_event))));\n" +" const struct inotify_event *event;\n" +" ssize_t len;\n" +"\\&\n" +" /* Loop while events can be read from inotify file descriptor. */\n" +"\\&\n" +" for (;;) {\n" +"\\&\n" +" /* Read some events. */\n" +"\\&\n" +" len = read(fd, buf, sizeof(buf));\n" +" if (len == -1 && errno != EAGAIN) {\n" +" perror(\"read\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" /* If the nonblocking read() found no events to read, then\n" +" it returns -1 with errno set to EAGAIN. In that case,\n" +" we exit the loop. */\n" +"\\&\n" +" if (len E<lt>= 0)\n" +" break;\n" +"\\&\n" +" /* Loop over all events in the buffer. */\n" +"\\&\n" +" for (char *ptr = buf; ptr E<lt> buf + len;\n" +" ptr += sizeof(struct inotify_event) + event-E<gt>len) {\n" +"\\&\n" +" event = (const struct inotify_event *) ptr;\n" +"\\&\n" +" /* Print event type. */\n" +"\\&\n" +" if (event-E<gt>mask & IN_OPEN)\n" +" printf(\"IN_OPEN: \");\n" +" if (event-E<gt>mask & IN_CLOSE_NOWRITE)\n" +" printf(\"IN_CLOSE_NOWRITE: \");\n" +" if (event-E<gt>mask & IN_CLOSE_WRITE)\n" +" printf(\"IN_CLOSE_WRITE: \");\n" +"\\&\n" +" /* Print the name of the watched directory. */\n" +"\\&\n" +" for (size_t i = 1; i E<lt> argc; ++i) {\n" +" if (wd[i] == event-E<gt>wd) {\n" +" printf(\"%s/\", argv[i]);\n" +" break;\n" +" }\n" +" }\n" +"\\&\n" +" /* Print the name of the file. */\n" +"\\&\n" +" if (event-E<gt>len)\n" +" printf(\"%s\", event-E<gt>name);\n" +"\\&\n" +" /* Print type of filesystem object. */\n" +"\\&\n" +" if (event-E<gt>mask & IN_ISDIR)\n" +" printf(\" [directory]\\en\");\n" +" else\n" +" printf(\" [file]\\en\");\n" +" }\n" +" }\n" +"}\n" +"\\&\n" +"int\n" +"main(int argc, char* argv[])\n" +"{\n" +" char buf;\n" +" int fd, i, poll_num;\n" +" int *wd;\n" +" nfds_t nfds;\n" +" struct pollfd fds[2];\n" +"\\&\n" +" if (argc E<lt> 2) {\n" +" printf(\"Usage: %s PATH [PATH ...]\\en\", argv[0]);\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" printf(\"Press ENTER key to terminate.\\en\");\n" +"\\&\n" +" /* Create the file descriptor for accessing the inotify API. */\n" +"\\&\n" +" fd = inotify_init1(IN_NONBLOCK);\n" +" if (fd == -1) {\n" +" perror(\"inotify_init1\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" /* Allocate memory for watch descriptors. */\n" +"\\&\n" +" wd = calloc(argc, sizeof(int));\n" +" if (wd == NULL) {\n" +" perror(\"calloc\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" /* Mark directories for events\n" +" - file was opened\n" +" - file was closed */\n" +"\\&\n" +" for (i = 1; i E<lt> argc; i++) {\n" +" wd[i] = inotify_add_watch(fd, argv[i],\n" +" IN_OPEN | IN_CLOSE);\n" +" if (wd[i] == -1) {\n" +" fprintf(stderr, \"Cannot watch \\[aq]%s\\[aq]: %s\\en\",\n" +" argv[i], strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +" }\n" +"\\&\n" +" /* Prepare for polling. */\n" +"\\&\n" +" nfds = 2;\n" +"\\&\n" +" fds[0].fd = STDIN_FILENO; /* Console input */\n" +" fds[0].events = POLLIN;\n" +"\\&\n" +" fds[1].fd = fd; /* Inotify input */\n" +" fds[1].events = POLLIN;\n" +"\\&\n" +" /* Wait for events and/or terminal input. */\n" +"\\&\n" +" printf(\"Listening for events.\\en\");\n" +" while (1) {\n" +" poll_num = poll(fds, nfds, -1);\n" +" if (poll_num == -1) {\n" +" if (errno == EINTR)\n" +" continue;\n" +" perror(\"poll\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" if (poll_num E<gt> 0) {\n" +"\\&\n" +" if (fds[0].revents & POLLIN) {\n" +"\\&\n" +" /* Console input is available. Empty stdin and quit. */\n" +"\\&\n" +" while (read(STDIN_FILENO, &buf, 1) E<gt> 0 && buf != \\[aq]\\en\\[aq])\n" +" continue;\n" +" break;\n" +" }\n" +"\\&\n" +" if (fds[1].revents & POLLIN) {\n" +"\\&\n" +" /* Inotify events are available. */\n" +"\\&\n" +" handle_events(fd, wd, argc, argv);\n" +" }\n" +" }\n" +" }\n" +"\\&\n" +" printf(\"Listening for events stopped.\\en\");\n" +"\\&\n" +" /* Close inotify file descriptor. */\n" +"\\&\n" +" close(fd);\n" +"\\&\n" +" free(wd);\n" +" exit(EXIT_SUCCESS);\n" +"}\n" +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "SEE ALSO" +msgstr "СМ. ТАКЖЕ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<inotifywait>(1), B<inotifywatch>(1), B<inotify_add_watch>(2), " +"B<inotify_init>(2), B<inotify_init1>(2), B<inotify_rm_watch>(2), B<read>(2), " +"B<stat>(2), B<fanotify>(7)" +msgstr "" +"B<inotifywait>(1), B<inotifywatch>(1), B<inotify_add_watch>(2), " +"B<inotify_init>(2), B<inotify_init1>(2), B<inotify_rm_watch>(2), B<read>(2), " +"B<stat>(2), B<fanotify>(7)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<Documentation/filesystems/inotify.txt> in the Linux kernel source tree" +msgstr "" +"Файл I<Documentation/filesystems/inotify.txt> в дереве исходного кода ядра " +"Linux" + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "2023-02-05" +msgstr "5 февраля 2023 г." + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "Linux man-pages 6.03" +msgstr "Linux man-pages 6.03" + +#. type: Plain text +#: debian-bookworm +#, fuzzy +#| msgid "" +#| "The I<name> field is present only when an event is returned for a file " +#| "inside a watched directory; it identifies the filename within to the " +#| "watched directory. This filename is null-terminated, and may include " +#| "further null bytes (\\(aq\\e0\\(aq) to align subsequent reads to a " +#| "suitable address boundary." +msgid "" +"The I<name> field is present only when an event is returned for a file " +"inside a watched directory; it identifies the filename within the watched " +"directory. This filename is null-terminated, and may include further null " +"bytes (\\[aq]\\e0\\[aq]) to align subsequent reads to a suitable address " +"boundary." +msgstr "" +"Поле I<name> существует только когда событие возвращается для файла внутри " +"отслеживаемого каталога; им определяется имя файла внутри отслеживаемого " +"каталога. Это имя завершается null и может включать дополнительные байты " +"null («\\e0») для выравнивания на подходящую границу адреса при последующих " +"операций чтения." + +#. type: SH +#: debian-bookworm +#, no-wrap +msgid "VERSIONS" +msgstr "ВЕРСИИ" + +#. type: Plain text +#: debian-bookworm +msgid "The inotify API is Linux-specific." +msgstr "Программный интерфейс inotify есть только в Linux." + +#. FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=77111 +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +msgid "" +"When a watch descriptor is removed by calling B<inotify_rm_watch>(2) (or " +"because a watch file is deleted or the filesystem that contains it is " +"unmounted), any pending unread events for that watch descriptor remain " +"available to read. As watch descriptors are subsequently allocated with " +"B<inotify_add_watch>(2), the kernel cycles through the range of possible " +"watch descriptors (0 to B<INT_MAX>) incrementally. When allocating a free " +"watch descriptor, no check is made to see whether that watch descriptor " +"number has any pending unread events in the inotify queue. Thus, it can " +"happen that a watch descriptor is reallocated even when pending unread " +"events exist for a previous incarnation of that watch descriptor number, " +"with the result that the application might then read those events and " +"interpret them as belonging to the file associated with the newly recycled " +"watch descriptor. In practice, the likelihood of hitting this bug may be " +"extremely low, since it requires that an application cycle through " +"B<INT_MAX> watch descriptors, release a watch descriptor while leaving " +"unread events for that watch descriptor in the queue, and then recycle that " +"watch descriptor. For this reason, and because there have been no reports " +"of the bug occurring in real-world applications, as of Linux 3.15, no kernel " +"changes have yet been made to eliminate this possible bug." +msgstr "" +"Когда дескриптор сторожка удаляется вызовом B<inotify_rm_watch>(2) (или из-" +"за удаления отслеживаемого файла, или размонтирования содержащей его " +"файловой системы), все ожидающие непрочитанные события для этого дескриптора " +"сторожка остаются доступными для чтения. Так как дескрипторы сторожков в " +"дальнейшем циклически выделяются B<inotify_add_watch>(2), ядро поступательно " +"проходит через диапазон возможных дескрипторов сторожков (от 0 до " +"B<INT_MAX>). При выделении свободного дескриптора сторожка для выбранного " +"номера не производится проверка того, есть ли какие-то ожидающие " +"непрочитанные события в очереди inotify с таким номером или нет. То есть " +"может случиться так, что дескриптор сторожка выделяется повторно даже когда " +"существуют ожидающие непрочитанные события, оставшиеся от предыдущего " +"выделения дескриптора сторожка с тем же номером; в результате приложение " +"может прочесть эти события и посчитать их как принадлежащие файлу, " +"связанному с новым повторно задействованным дескриптором сторожка. На " +"практике, вероятность столкновения с этой ошибкой может быть чрезвычайно " +"низка, так как для этого требуется, чтобы приложения циклически перебрало " +"все B<INT_MAX> дескрипторов сторожков, освободило дескриптор сторожка и " +"оставило непрочитанные события этого дескриптора сторожка в очереди, а затем " +"повторно задействовало этот дескриптор сторожка. По этой причине и из-за " +"того, что ещё никто не сообщал об этой ошибке в реальности, на момент " +"актуальности Linux 3.15, в ядре ничего не было сделано для того, чтобы " +"устранить этот дефект." + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"$ B<./a.out /tmp /home/user/temp>\n" +"Press enter key to terminate.\n" +"Listening for events.\n" +"IN_OPEN: /home/user/temp/foo [file]\n" +"IN_CLOSE_WRITE: /home/user/temp/foo [file]\n" +"IN_OPEN: /tmp/ [directory]\n" +"IN_CLOSE_NOWRITE: /tmp/ [directory]\n" +msgstr "" +"$ B<./a.out /tmp /home/user/temp>\n" +"Нажмите ENTER для завершения работы.\n" +"Ожидание событий.\n" +"IN_OPEN: /home/user/temp/foo [файл]\n" +"IN_CLOSE_WRITE: /home/user/temp/foo [файл]\n" +"IN_OPEN: /tmp/ [каталог]\n" +"IN_CLOSE_NOWRITE: /tmp/ [каталог]\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "Listening for events stopped.\n" +msgstr "Ожидание событий прекращено.\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid "" +#| "#include E<lt>errno.hE<gt>\n" +#| "#include E<lt>poll.hE<gt>\n" +#| "#include E<lt>stdio.hE<gt>\n" +#| "#include E<lt>stdlib.hE<gt>\n" +#| "#include E<lt>sys/inotify.hE<gt>\n" +#| "#include E<lt>unistd.hE<gt>\n" +msgid "" +"#include E<lt>errno.hE<gt>\n" +"#include E<lt>poll.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/inotify.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" +"#include E<lt>string.hE<gt>\n" +msgstr "" +"#include E<lt>errno.hE<gt>\n" +"#include E<lt>poll.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/inotify.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid "" +#| "/* Read all available inotify events from the file descriptor 'fd'.\n" +#| " wd is the table of watch descriptors for the directories in argv.\n" +#| " argc is the length of wd and argv.\n" +#| " argv is the list of watched directories.\n" +#| " Entry 0 of wd and argv is unused. */\n" +msgid "" +"/* Read all available inotify events from the file descriptor \\[aq]fd\\[aq].\n" +" wd is the table of watch descriptors for the directories in argv.\n" +" argc is the length of wd and argv.\n" +" argv is the list of watched directories.\n" +" Entry 0 of wd and argv is unused. */\n" +msgstr "" +"/* Читаем все доступные события из файлового дескриптора «fd».\n" +" wd — таблица дескрипторов сторожков для каталогов из argv.\n" +" argc — длина wd и argv.\n" +" argv — список наблюдаемых каталогов.\n" +" Элемент 0 в wd и argv не используется. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"static void\n" +"handle_events(int fd, int *wd, int argc, char* argv[])\n" +"{\n" +" /* Some systems cannot read integer variables if they are not\n" +" properly aligned. On other systems, incorrect alignment may\n" +" decrease performance. Hence, the buffer used for reading from\n" +" the inotify file descriptor should have the same alignment as\n" +" struct inotify_event. */\n" +msgstr "" +"static void\n" +"handle_events(int fd, int *wd, int argc, char* argv[])\n" +"{\n" +" /* В некоторых системах невозможно прочитать целые переменные, если\n" +" они неправильно выровнены. В других системах некорректное\n" +" выравнивание может снижать производительность. Таким образом, буфер,\n" +" используемый для чтения из файлового дескриптора inotify, должен быть\n" +" выровнен также как структура struct inotify_event. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid "" +#| " char buf[4096]\n" +#| " __attribute__ ((aligned(__alignof__(struct inotify_event))));\n" +#| " const struct inotify_event *event;\n" +#| " int i;\n" +#| " ssize_t len;\n" +#| " char *ptr;\n" +msgid "" +" char buf[4096]\n" +" __attribute__ ((aligned(__alignof__(struct inotify_event))));\n" +" const struct inotify_event *event;\n" +" ssize_t len;\n" +msgstr "" +" char buf[4096]\n" +" __attribute__ ((aligned(__alignof__(struct inotify_event))));\n" +" const struct inotify_event *event;\n" +" int i;\n" +" ssize_t len;\n" +" char *ptr;\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Loop while events can be read from inotify file descriptor. */\n" +msgstr "" +" /* проходим по всем событиям, которые можем прочитать\n" +" из файлового дескриптора inotify */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " for (;;) {\n" +msgstr " for (;;) {\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Read some events. */\n" +msgstr " /* читаем несколько событий */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" len = read(fd, buf, sizeof(buf));\n" +" if (len == -1 && errno != EAGAIN) {\n" +" perror(\"read\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" len = read(fd, buf, sizeof(buf));\n" +" if (len == -1 && errno != EAGAIN) {\n" +" perror(\"read\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" /* If the nonblocking read() found no events to read, then\n" +" it returns -1 with errno set to EAGAIN. In that case,\n" +" we exit the loop. */\n" +msgstr "" +" /* Если неблокирующий read() не найдёт событий для чтения, то\n" +" вернёт -1 с errno равным EAGAIN. В этом случае\n" +" выходим из цикла. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (len E<lt>= 0)\n" +" break;\n" +msgstr "" +" if (len E<lt>= 0)\n" +" break;\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Loop over all events in the buffer. */\n" +msgstr " /* Проходим по всем событиям в буфере. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid "" +#| " for (ptr = buf; ptr E<lt> buf + len;\n" +#| " ptr += sizeof(struct inotify_event) + event-E<gt>len) {\n" +msgid "" +" for (char *ptr = buf; ptr E<lt> buf + len;\n" +" ptr += sizeof(struct inotify_event) + event-E<gt>len) {\n" +msgstr "" +" for (ptr = buf; ptr E<lt> buf + len;\n" +" ptr += sizeof(struct inotify_event) + event-E<gt>len) {\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " event = (const struct inotify_event *) ptr;\n" +msgstr " event = (const struct inotify_event *) ptr;\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Print event type */\n" +msgid " /* Print event type. */\n" +msgstr " /* печатаем тип события */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (event-E<gt>mask & IN_OPEN)\n" +" printf(\"IN_OPEN: \");\n" +" if (event-E<gt>mask & IN_CLOSE_NOWRITE)\n" +" printf(\"IN_CLOSE_NOWRITE: \");\n" +" if (event-E<gt>mask & IN_CLOSE_WRITE)\n" +" printf(\"IN_CLOSE_WRITE: \");\n" +msgstr "" +" if (event-E<gt>mask & IN_OPEN)\n" +" printf(\"IN_OPEN: \");\n" +" if (event-E<gt>mask & IN_CLOSE_NOWRITE)\n" +" printf(\"IN_CLOSE_NOWRITE: \");\n" +" if (event-E<gt>mask & IN_CLOSE_WRITE)\n" +" printf(\"IN_CLOSE_WRITE: \");\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Print the name of the watched directory */\n" +msgid " /* Print the name of the watched directory. */\n" +msgstr " /* печатаем имя наблюдаемого каталога */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid "" +#| " for (i = 1; i E<lt> argc; ++i) {\n" +#| " if (wd[i] == event-E<gt>wd) {\n" +#| " printf(\"%s/\", argv[i]);\n" +#| " break;\n" +#| " }\n" +#| " }\n" +msgid "" +" for (size_t i = 1; i E<lt> argc; ++i) {\n" +" if (wd[i] == event-E<gt>wd) {\n" +" printf(\"%s/\", argv[i]);\n" +" break;\n" +" }\n" +" }\n" +msgstr "" +" for (i = 1; i E<lt> argc; ++i) {\n" +" if (wd[i] == event-E<gt>wd) {\n" +" printf(\"%s/\", argv[i]);\n" +" break;\n" +" }\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Print the name of the file */\n" +msgid " /* Print the name of the file. */\n" +msgstr " /* печатаем имя файла */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (event-E<gt>len)\n" +" printf(\"%s\", event-E<gt>name);\n" +msgstr "" +" if (event-E<gt>len)\n" +" printf(\"%s\", event-E<gt>name);\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Print type of filesystem object */\n" +msgid " /* Print type of filesystem object. */\n" +msgstr " /* печатаем тип объекта файловой системы */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (event-E<gt>mask & IN_ISDIR)\n" +" printf(\" [directory]\\en\");\n" +" else\n" +" printf(\" [file]\\en\");\n" +" }\n" +" }\n" +"}\n" +msgstr "" +" if (event-E<gt>mask & IN_ISDIR)\n" +" printf(\" [каталог]\\en\");\n" +" else\n" +" printf(\" [файл]\\en\");\n" +" }\n" +" }\n" +"}\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"int\n" +"main(int argc, char* argv[])\n" +"{\n" +" char buf;\n" +" int fd, i, poll_num;\n" +" int *wd;\n" +" nfds_t nfds;\n" +" struct pollfd fds[2];\n" +msgstr "" +"int\n" +"main(int argc, char* argv[])\n" +"{\n" +" char buf;\n" +" int fd, i, poll_num;\n" +" int *wd;\n" +" nfds_t nfds;\n" +" struct pollfd fds[2];\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (argc E<lt> 2) {\n" +" printf(\"Usage: %s PATH [PATH ...]\\en\", argv[0]);\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" if (argc E<lt> 2) {\n" +" printf(\"Использование: %s ПУТЬ [ПУТЬ …]\\en\", argv[0]);\n" +" exit(EXIT_FAILURE);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " printf(\"Press ENTER key to terminate.\\en\");\n" +msgstr " printf(\"Нажмите ENTER для завершения работы.\\en\");\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Create the file descriptor for accessing the inotify API */\n" +msgid " /* Create the file descriptor for accessing the inotify API. */\n" +msgstr " /* Создаём файловый дескриптор для доступа к inotify API */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" fd = inotify_init1(IN_NONBLOCK);\n" +" if (fd == -1) {\n" +" perror(\"inotify_init1\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" fd = inotify_init1(IN_NONBLOCK);\n" +" if (fd == -1) {\n" +" perror(\"inotify_init1\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Allocate memory for watch descriptors */\n" +msgid " /* Allocate memory for watch descriptors. */\n" +msgstr " /* выделяем память под дескрипторы сторожков */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" wd = calloc(argc, sizeof(int));\n" +" if (wd == NULL) {\n" +" perror(\"calloc\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" wd = calloc(argc, sizeof(int));\n" +" if (wd == NULL) {\n" +" perror(\"calloc\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" /* Mark directories for events\n" +" - file was opened\n" +" - file was closed */\n" +msgstr "" +" /* помечаем каталоги для событий\n" +" - файл был открыт \n" +" - файл был закрыт */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid "" +#| " for (i = 1; i E<lt> argc; i++) {\n" +#| " wd[i] = inotify_add_watch(fd, argv[i],\n" +#| " IN_OPEN | IN_CLOSE);\n" +#| " if (wd[i] == -1) {\n" +#| " fprintf(stderr, \"Cannot watch '%s'\\en\", argv[i]);\n" +#| " perror(\"inotify_add_watch\");\n" +#| " exit(EXIT_FAILURE);\n" +#| " }\n" +#| " }\n" +msgid "" +" for (i = 1; i E<lt> argc; i++) {\n" +" wd[i] = inotify_add_watch(fd, argv[i],\n" +" IN_OPEN | IN_CLOSE);\n" +" if (wd[i] == -1) {\n" +" fprintf(stderr, \"Cannot watch \\[aq]%s\\[aq]: %s\\en\",\n" +" argv[i], strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +" }\n" +msgstr "" +" for (i = 1; i E<lt> argc; i++) {\n" +" wd[i] = inotify_add_watch(fd, argv[i],\n" +" IN_OPEN | IN_CLOSE);\n" +" if (wd[i] == -1) {\n" +" fprintf(stderr, \"Невозможно пронаблюдать '%s'\\en\", argv[i]);\n" +" perror(\"inotify_add_watch\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Prepare for polling. */\n" +msgstr " /* Подготовка к опросу. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " nfds = 2;\n" +msgstr " nfds = 2;\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid "" +#| " fds[0].fd = STDIN_FILENO;\n" +#| " fds[0].events = POLLIN;\n" +msgid "" +" fds[0].fd = STDIN_FILENO; /* Console input */\n" +" fds[0].events = POLLIN;\n" +msgstr "" +" fds[0].fd = STDIN_FILENO;\n" +" fds[0].events = POLLIN;\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid "" +#| " fds[1].fd = fd;\n" +#| " fds[1].events = POLLIN;\n" +msgid "" +" fds[1].fd = fd; /* Inotify input */\n" +" fds[1].events = POLLIN;\n" +msgstr "" +" fds[1].fd = fd;\n" +" fds[1].events = POLLIN;\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Wait for events and/or terminal input */\n" +msgid " /* Wait for events and/or terminal input. */\n" +msgstr " /* ждём события и/или ввода с терминала */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" printf(\"Listening for events.\\en\");\n" +" while (1) {\n" +" poll_num = poll(fds, nfds, -1);\n" +" if (poll_num == -1) {\n" +" if (errno == EINTR)\n" +" continue;\n" +" perror(\"poll\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" printf(\"Ожидание событий.\\en\");\n" +" while (1) {\n" +" poll_num = poll(fds, nfds, -1);\n" +" if (poll_num == -1) {\n" +" if (errno == EINTR)\n" +" continue;\n" +" perror(\"poll\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " if (poll_num E<gt> 0) {\n" +msgstr " if (poll_num E<gt> 0) {\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " if (fds[0].revents & POLLIN) {\n" +msgstr " if (fds[0].revents & POLLIN) {\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Console input is available. Empty stdin and quit */\n" +msgid " /* Console input is available. Empty stdin and quit. */\n" +msgstr " /* доступен ввод с консоли: опустошаем stdin и выходим */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" while (read(STDIN_FILENO, &buf, 1) E<gt> 0 && buf != \\[aq]\\en\\[aq])\n" +" continue;\n" +" break;\n" +" }\n" +msgstr "" +" while (read(STDIN_FILENO, &buf, 1) E<gt> 0 && buf != \\[aq]\\en\\[aq])\n" +" continue;\n" +" break;\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " if (fds[1].revents & POLLIN) {\n" +msgstr " if (fds[1].revents & POLLIN) {\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Inotify events are available */\n" +msgid " /* Inotify events are available. */\n" +msgstr " /* доступны события inotify */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" handle_events(fd, wd, argc, argv);\n" +" }\n" +" }\n" +" }\n" +msgstr "" +" handle_events(fd, wd, argc, argv);\n" +" }\n" +" }\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " printf(\"Listening for events stopped.\\en\");\n" +msgstr " printf(\"Ожидание событий прекращено.\\en\");\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy, no-wrap +#| msgid " /* Close inotify file descriptor */\n" +msgid " /* Close inotify file descriptor. */\n" +msgstr " /* закрываем файловый дескриптор inotify */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " close(fd);\n" +msgstr " close(fd);\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" free(wd);\n" +" exit(EXIT_SUCCESS);\n" +"}\n" +msgstr "" +" free(wd);\n" +" exit(EXIT_SUCCESS);\n" +"}\n" + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "2023-07-08" +msgstr "8 июля 2023 г." + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "Linux man-pages 6.05.01" +msgstr "Linux man-pages 6.05.01" + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "2023-03-30" +msgstr "30 марта 2023 г." + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "Linux man-pages 6.04" +msgstr "Linux man-pages 6.04" |