# Russian translation of manpages # This file is distributed under the same license as the manpages-l10n package. # Copyright © of this file: # Azamat Hackimov , 2013-2014, 2017. # Dmitriy S. Seregin , 2013. # Yuri Kozlov , 2011-2019. # Иван Павлов , 2017, 2019. msgid "" msgstr "" "Project-Id-Version: manpages-l10n\n" "POT-Creation-Date: 2024-06-01 05:56+0200\n" "PO-Revision-Date: 2019-10-05 08:17+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \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 debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "2 мая 2024 г." #. type: TH #: archlinux debian-unstable #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages 6.8" msgstr "Linux man-pages 6.7" #. 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 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 " "возвращает события как для самого каталога, так и для файлов внутри каталога." #. 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(2) creates an inotify instance and returns a file " "descriptor referring to the inotify instance. The more recent " "B(2) is like B(2), but has a I argument " "that provides access to some extra functionality." msgstr "" "Вызов B(2) создаёт экземпляр inotify и возвращает файловый " "дескриптор, ссылающийся на экземпляр inotify. Более новый " "B(2) подобен B(2), но имеет аргумент I, " "который предоставляет доступ к некоторым дополнительным возможностям." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(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(2) either creates a new watch item, or modifies an " "existing watch. Each watch has a unique \"watch descriptor\", an integer " "returned by B(2) when the watch is created." msgstr "" "Вызов B(2) изменяет «список наблюдения», связанный с " "экземпляром inotify. Каждый элемент (сторожок (watch)) в списке задаёт путь " "к файлу или каталогу и некоторый набор событий, которые ядро должно " "отслеживать для файла, на который указывает этот путь. Вызов " "B(2) или создаёт новый сторожок, или изменяет " "существующий. Каждый сторожок имеет уникальный «дескриптор сторожка» — целое " "число, возвращаемое B(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(2) (see below)." msgstr "" "При возникновении событий с отслеживаемыми файлами и каталогами, эти события " "становятся доступны приложению в виде структурированных данных, которые " "можно прочитать из файлового дескриптора inotify с помощью B(2) " "(смотрите ниже)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B(2) removes an item from an inotify watch list." msgstr "" "Вызов B(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(2)), the underlying object and its resources are freed for " "reuse by the kernel; all associated watches are automatically freed." msgstr "" "При закрытии (с помощью B(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(2)s from the " "inotify file descriptor. If no events have so far occurred, then, assuming " "a blocking file descriptor, B(2) will block until at least one event " "occurs (unless interrupted by a signal, in which case the call fails with " "the error B; see B(7))." msgstr "" "Чтобы определить, что события произошли, приложение должно прочитать " "(B(2)) файловый дескриптор inotify. Если событий не было, то " "предполагая, что это блокирующий файловый дескриптор, вызов B(2) " "заблокирует работу до возникновения, по крайней мере, одного события (если " "не будет прерван сигналом; в этом случае вызов завершается с ошибкой " "B, смотрите B(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(2) returns a buffer containing one or more of the " "following structures:" msgstr "" "При успешном выполнении B(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 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 */\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 identifies the watch for which this event occurs. It is one of the " "watch descriptors returned by a previous call to B(2)." msgstr "" "В I указывается сторожок, к которому относится событие. Это один из " "дескрипторов сторожка, полученный из вызова B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I contains bits that describe the event that occurred (see below)." msgstr "" "В I содержатся биты, описывающие возникшее событие (смотрите ниже)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I is a unique integer that connects related events. Currently, this " "is used only for rename events, and allows the resulting pair of " "B and B events to be connected by the " "application. For all other event types, I is set to 0." msgstr "" "Значение I — это уникальное целое, которое объединяет связанные " "события. В настоящее время используется только для событий переименования и " "позволяет приложению объединить возвращаемые B и " "B в пару событий. Для остальных типов событий значение " "I равно 0." #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "The I 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 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 существует только когда событие возвращается для файла внутри " "отслеживаемого каталога; им определяется имя файла внутри отслеживаемого " "каталога. Это имя завершается 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 field counts all of the bytes in I, including the null " "bytes; the length of each I structure is thus I." msgstr "" "Поле I содержит количество всех байт в I, включая байты null; " "длина каждой структуры I равна I." #. 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(2) is too small to return " #| "information about the next event depends on the kernel version: in " #| "kernels before 2.6.21, B(2) returns 0; since kernel 2.6.21, " #| "B(2) fails with the error B. Specifying a buffer of size" msgid "" "The behavior when the buffer given to B(2) is too small to return " "information about the next event depends on the kernel version: before Linux " "2.6.21, B(2) returns 0; since Linux 2.6.21, B(2) fails with " "the error B. Specifying a buffer of size" msgstr "" "Если буфер, заданный в B(2), слишком мал для возврата информации о " "следующем событии, то поведение зависит от версии ядра: в ядрах до версии " "2.6.21, B(2) возвращает 0; начиная с версии 2.6.21, B(2) " "завершается с ошибкой B. Указание размера буфера " #. 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(2) I argument and the I field of the " "I structure returned when B(2)ing an inotify file " "descriptor are both bit masks identifying inotify events. The following " "bits can be specified in I when calling B(2) and " "may be returned in the I field returned by B(2):" msgstr "" "В аргументе B(2) I и поле I структуры " "I, возвращаемых при чтении файлового дескриптора inotify, " "содержатся битовые маски, определяющие события inotify. Следующие биты могут " "быть заданы в I при вызове B(2) и возвращены в поле " "I, возвращаемом B(2):" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (+)" msgstr "B (+)" #. 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(2), B(2))." msgstr "Был произведён доступ к файлу (например, B(2), B(2))." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (*)" msgstr "B (*)" #. 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(2)), " #| "timestamps (e.g., B(2)), extended attributes (B(2)), " #| "link count (since Linux 2.6.25; e.g., for the target of B(2) and " #| "for B(2)), and user/group ID (e.g., B(2))." msgid "" "Metadata changed\\[em]for example, permissions (e.g., B(2)), " "timestamps (e.g., B(2)), extended attributes (B(2)), " "link count (since Linux 2.6.25; e.g., for the target of B(2) and for " "B(2)), and user/group ID (e.g., B(2))." msgstr "" "Изменились метаданные — например, права доступа (например, B(2)), " "отметки времени (например, B(2)), расширенные атрибуты " "(B(2)), счётчик ссылок (начиная с Linux 2.6.25; например, для " "аргумента назначения B(2) и B(2)) и идентификатор пользователя/" "группы (например, B(2))." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (+)" msgstr "B (+)" #. 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 (*)" msgstr "B (*)" #. 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 (+)" msgstr "B (+)" #. 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(2) B, " "B(2), B(2), B(2), B(2) on a UNIX domain socket)." msgstr "" "В отслеживаемом каталоге был создан файл/каталог (например, B(2) " "B, B(2), B(2), B(2), B(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 (+)" msgstr "B (+)" #. 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" msgstr "B" #. 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(1) in effect copies the " "file to the other filesystem and then deletes it from the original " "filesystem.) In addition, an B event will subsequently be " "generated for the watch descriptor." msgstr "" "Отслеживаемый файл/каталог был удалён (это событие также возникает, если " "объект перемещён в другую файловую систему, так как B(1), фактически, " "копирует файл в другую файловую систему и удаляет его из исходной). Также " "затем будет создано событие B для дескриптора сторожка." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (+)" msgstr "B (+)" #. 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(2), B(2))." msgstr "Файл был изменён (например, B(2), B(2))." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 (+)" msgstr "B (+)" #. 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 (+)" msgstr "B (+)" #. 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 (*)" msgstr "B (*)" #. 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: 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 field in the returned I structure identifies the name " "of the file within the directory." msgstr "" "Когда события генерируются для объектов внутри отслеживаемого каталога, поле " "I, возвращаемое в структуре I, хранит имя файла внутри " "этого каталога." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B macro is defined as a bit mask of all of the above " "events. This macro can be used as the I argument when calling " "B(2)." msgstr "" "Макрос B определён как битовая маска всех перечисленных выше " "событий. Данный макрос можно использовать в качестве аргумента I в " "вызове B(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" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Equates to B." msgstr "То же, что и B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Equates to B." msgstr "То же, что и B." #. 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 when calling " "B(2):" msgstr "" "Также, при вызове B(2) в I могут быть указаны " "следующие биты:" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.15)" msgstr "B (начиная с 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 if it is a symbolic link." msgstr "Не разыменовывать I, если это символическая ссылка." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.36)" msgstr "B (начиная с 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, in which many applications " "create temporary files whose names are immediately unlinked). Specifying " "B changes the default behavior, so that events are not " "generated for children after they have been unlinked from the watched " "directory." msgstr "" "По умолчанию, при слежении за событиями для потомков каталога, события " "генерируются для потомков даже после того, как они будут удалены из " "каталога. Это может привести к большому количеству ненужных для приложения " "событий (например, если следить за I, в котором многие приложения " "создают и сразу удаляют временные файлы). Указание B " "изменяет поведение по умолчанию, и такие события не генерируются для " "потомков после удаления из отслеживаемого каталога." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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, add (OR) the events in I to the watch mask (instead of " "replacing the mask); the error B results if B is " "also specified." msgstr "" "Если экземпляр слежения уже существует для объекта файловой системы " "соответствующего I, то выполнять добавление (OR) событий в I " "к маске слежения (вместо замены маски); если также указан B, " "то возвращается ошибка B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 for one event, " "then remove from watch list." msgstr "" "Отслеживать объект файловой системы, соответствующий I до одного " "события, затем удалить объект из списка слежения." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.15)" msgstr "B (начиная с 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 only if it is a directory; the error B results if " "I 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, только если это каталог; если I не " "является каталогом, то возвращается ошибка B. Этот флаг " "предоставляет приложению бессостязательный способ убедиться, что " "отслеживаемый объект — каталог." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.18)" msgstr "B (начиная с 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 only if it does not already have a watch associated with " "it; the error B results if I is already being watched." msgstr "" "Следить за I только, если за ним никто не следит; если уже " "выполняется слежение за I, то возвращается ошибка B." #. 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(2) " "without this flag may clobber existing watch masks." msgstr "" "С помощью этого флага приложение может быть уверено, что новые слежения не " "изменят существующих. Это полезно, так как несколько путей могут ссылаться " "на одну иноду, а несколько вызовов B(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 field returned by B(2):" msgstr "" "Следующие биты могут быть установлены в поле I при возврате из " "B(2):" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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(2)) or automatically " "(file was deleted, or filesystem was unmounted). See also BUGS." msgstr "" "Слежение было снято явно (B(2)) или автоматически (файл " "был удалён или размонтирована файловая система). Также смотрите ДЕФЕКТЫ." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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" msgstr "B" #. 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 is -1 for this event)." msgstr "" "Переполнена очередь событий (для этого события значение I равно -1)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 event will subsequently be generated for the watch descriptor." msgstr "" "Файловая система, содержащая отслеживаемый объект, была размонтирована. " "Также, будет сгенерировано событие B для дескриптора сторожка." #. 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 and the file I for all events. The examples below show some events that will be " "generated for these two objects." msgstr "" "Предположим, приложение следит за всеми событиями для каталога I и " "файла I. В примере ниже показаны некоторые события, которые " "будут сгенерированы для этих двух объектов." #. 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 events for both I and I." msgstr "Генерируется событие B и для I, и для I." #. 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 events for both I and I." msgstr "Генерируется событие B и для I, и для I." #. 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 events for both I and I." msgstr "Генерируется событие B и для I, и для I." #. 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 events for both I and I." msgstr "Генерируется событие B и для I, и для I." #. 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 events for both I and I." msgstr "" "Генерируется событие B и для I, и для I." #. 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 and I, and " "the file I. The following examples show some events that may " "be generated." msgstr "" "Предположим, приложение следит за всеми событиями для каталогов I и " "I и файла I. В примере ниже показаны некоторые события, " "которые могут быть сгенерированы." #. 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 event for I and an B event for " "I." msgstr "" "Генерируется событие B для I и событие B для " "I." #. 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 event for I, an B event for " "I, and an B event for I. The B " "and B events will have the same I value." msgstr "" "Генерируется событие B для I, событие B " "для I и событие B для I. События " "B и B будут содержать одинаковое значение " "I." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Suppose that I and I are (the only) links to the same " "file, and an application is watching I, I, I, and " "I. Executing the following calls in the order given below will " "generate the following events:" msgstr "" "Предположим, что I и I только ссылки на один файл и " "приложение следит за I, I, I и I. При " "выполнение следующих вызовов в порядке, указанном ниже, будут сгенерированы " "следующие события:" #. 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 event for I (because its link count changes) " "and an B event for I." msgstr "" "Генерируется событие B для I (так как изменился его счётчик " "ссылок) и событие B для I." #. 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, B, and B events for " "I, and an B event for I." msgstr "" "Генерируется событие B, B и B для " "I и событие B для I." #. 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 and (the empty) " "directory I. The following examples show some events that may " "be generated." msgstr "" "Предположим, приложение следит за каталогом I и пустым каталогом I. В примере ниже показаны некоторые события, которые могут быть " "сгенерированы." #. 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 event for I." msgstr "Генерируется событие B для I." #. 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 and B events for I, and an " "B event for I." msgstr "" "Генерируются события B и B для I и " "событие B для I." #. 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" msgstr "I" #. 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(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 event is always generated." msgstr "" "Значение в этом файле используется когда приложение вызывает " "B(2) для установки верхнего порога количества событий, которые " "могут поместиться в очередь соответствующего экземпляра inotify. События, " "превысившие это ограничение, отбрасываются, но событие B " "генерируется всегда." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I" msgstr "I" #. 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" msgstr "I" #. 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, " #| "B, and B 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, B, and B " "were added in glibc 2.5.)" msgstr "" "Программный интерфейс inotify был добавлен в ядро Linux версии 2.6.13. " "Необходимые библиотечные интерфейсы добавлены в glibc версии 2.4 " "(B, B и B добавлены в 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(2), " "B(2), и B(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 (for setting the " "B flag), B, and B in B(2). The " "I structure (described in B(2)) that is passed to the " "signal handler has the following fields set: I is set to the inotify " "file descriptor number; I is set to the signal number; I " "is set to B; and B is set in I." msgstr "" "Начиная с Linux 2.6.25, для файловых дескрипторов inotify стали доступны " "уведомления ввода-вывода посредством сигналов; смотрите обсуждение " "B (для установки флага B), B и B в " "B(2). Структура I (описана в B(2)), " "передаваемая обработчику сигнала, содержит следующие настройки полей: в " "I указывается номер файлового дескриптора inotify; в I " "указывается номер сигнала; в I указывается B; в I " "указывается B." #. 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, I, I, and I), 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, I, I и " "I), то они сливаются в одно событие, если самое старое событие ещё не " "прочитано (но смотрите ДЕФЕКТЫ). Это сокращает требуемое количество памяти " "ядра для очереди событий, но также означает, что приложение не может " "использовать 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 directory. See B(5) for " #| "further details. The B B(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 IpidI directory. See B(5) for further " "details. The B B(2) returns the number of bytes available " "to read from an inotify file descriptor." msgstr "" "Набор наблюдаемых дескрипторов, которые отслеживаются через файловый " "дескриптор inotify, можно увидеть из записи для файлового дескриптора " "inotify в каталоге процесса I. Дополнительную информацию " "смотрите в B(5). Вызов B B(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, I, and I are not monitorable with inotify." msgstr "" "Inotify сообщает только о событиях, которые возникли из-за пользовательских " "программ, использовавших программный интерфейс файловой системы. То есть, не " "возникает событий для файловых систем, доступных по сети (приложения должны " "использовать старый метод опроса файловой системы для слежения за такими " "событиями). Кроме того, различные псевдо-файловый системы, такие как I, I и I, не отслеживаются через 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(2), B(2), and B(2)." msgstr "" "Программный интерфейс inotify не сообщает о доступе и изменениях, которые " "могут произойти из-за B(2), B(2) и B(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 and B event pair that is " "generated by B(2) can be matched up via their shared cookie value. " "However, the task of matching has some challenges." msgstr "" "Как указывалось выше, из событий B и B, " "генерируемых B(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 and B 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 has appeared, but the " "B has not." msgstr "" "Эти два события, обычно, стоят друг за другом в потоке событий, если читать " "из файлового дескриптора inotify. Однако, это не гарантируется. Если " "несколько процессов создают события для отслеживаемых объектов, то (в редких " "случаях) произвольное количество других событий может появиться между " "событиями B и B. Кроме того, не гарантируется, " "что пара событий вставляется в очередь атомарно: может существовать короткий " "интервал, в котором B уже появилось, а B ещё нет." #. 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 and B event pair generated by " "B(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 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 and B 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 и B паре событий, сгенерированных " "B(2), по сути, просто (не забудьте, что если объект " "переименовывается вне отслеживаемого каталога, то может не быть даже события " "B). Можно использовать эвристические предположения (например, " "что события всегда следуют друг за другом), что работает в большинстве " "случаев, но неминуемо не сработает в некоторых случаях, в которых приложение " "посчитает события B и B несвязными. Если в " "результате дескрипторы сторожков будут уничтожены и пересозданы, то такие " "дескрипторы будут несогласованны с дескрипторами сторожков для любых " "ожидающих событий (пересоздание файлового дескриптора 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 event was the last event that could fit in the buffer " #| "returned by the current call to B(2), and the accompanying " #| "B event might be fetched only on the next B(2), which " #| "should be done with a (small) timeout to allow for the fact that " #| "insertion of the B-B event pair is not " #| "atomic, and also the possibility that there may not be any B " #| "event." msgid "" "Applications should also allow for the possibility that the B " "event was the last event that could fit in the buffer returned by the " "current call to B(2), and the accompanying B event might " "be fetched only on the next B(2), which should be done with a (small) " "timeout to allow for the fact that insertion of the B" "+B event pair is not atomic, and also the possibility that " "there may not be any B event." msgstr "" "Также приложения должны учитывать возможность того, что событие " "B — последнее событие, которое попало в буфер, возвращаемый " "текущим вызовом B(2), и сопутствующее событие B может " "быть получено только при следующем чтении B(2), которое должно быть " "выполнено с (коротким) промежутком, позволяющим фактическую не атомарную " "вставку пары событий B-B, и также возможность " "того, что может отсутствовать событие B." #. 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(2) did not create any inotify events. " "Since Linux 3.19, calls to B(2) generate B events." msgstr "" "До Linux 3.19, B(2) не создавал события inotify. Начиная с Linux " "3.19, вызов B(2) генерирует событие B." #. 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 I flag does not work." msgid "Before Linux 2.6.16, the B I flag does not work." msgstr "В ядрах до 2.6.16 флаг B в I не работает." #. 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 flag did not cause " "an B 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 event is generated in this case." msgstr "" "В первоначальной задумке и реализации флаг B не приводил к " "генерации события B, если наблюдение отменялось после одного " "события. Однако, как непреднамеренный эффект других изменений, начиная с " "Linux 2.6.36, событие B в этом случае генерируется." #. 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 " #| "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 " "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(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(2), the kernel cycles through the range of possible " #| "watch descriptors (0 to B) 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 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(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(2), the kernel cycles through the range of possible " "watch descriptors (1 to B) 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 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(2) (или из-" "за удаления отслеживаемого файла, или размонтирования содержащей его " "файловой системы), все ожидающие непрочитанные события для этого дескриптора " "сторожка остаются доступными для чтения. Так как дескрипторы сторожков в " "дальнейшем циклически выделяются B(2), ядро поступательно " "проходит через диапазон возможных дескрипторов сторожков (от 0 до " "B). При выделении свободного дескриптора сторожка для выбранного " "номера не производится проверка того, есть ли какие-то ожидающие " "непрочитанные события в очереди inotify с таким номером или нет. То есть " "может случиться так, что дескриптор сторожка выделяется повторно даже когда " "существуют ожидающие непрочитанные события, оставшиеся от предыдущего " "выделения дескриптора сторожка с тем же номером; в результате приложение " "может прочесть эти события и посчитать их как принадлежащие файлу, " "связанному с новым повторно задействованным дескриптором сторожка. На " "практике, вероятность столкновения с этой ошибкой может быть чрезвычайно " "низка, так как для этого требуется, чтобы приложения циклически перебрало " "все B дескрипторов сторожков, освободило дескриптор сторожка и " "оставило непрочитанные события этого дескриптора сторожка в очереди, а затем " "повторно задействовало этот дескриптор сторожка. По этой причине и из-за " "того, что ещё никто не сообщал об этой ошибке в реальности, на момент " "актуальности 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, B and B." 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, B, and B." msgstr "" "Следующая программа демонстрирует использование программного интерфейса " "inotify. Она помечает каталоги, переданной в аргументах командной строки, и " "ждёт событий с типом B, B и B." #. 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 and listing directory I. Before the file and the directory were " "opened, B events occurred. After the file was closed, an " "B event occurred. After the directory was closed, an " "B event occurred. Execution of the program ended when the " "user pressed the ENTER key." msgstr "" "Следующий вывод был записан при редактировании файла I " "и просмотра каталога I. Перед открытием файла и каталога произошли " "события B. После закрытия файла произошло событие " "B. После закрытия каталога произошло событие " "B. Выполнение программы закончилось после нажатия " "пользователем клавиши 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 Eerrno.hE\n" "#include Epoll.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/inotify.hE\n" "#include Eunistd.hE\n" "#include Estring.hE\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= 0)\n" " break;\n" "\\&\n" " /* Loop over all events in the buffer. */\n" "\\&\n" " for (char *ptr = buf; ptr E buf + len;\n" " ptr += sizeof(struct inotify_event) + event-Elen) {\n" "\\&\n" " event = (const struct inotify_event *) ptr;\n" "\\&\n" " /* Print event type. */\n" "\\&\n" " if (event-Emask & IN_OPEN)\n" " printf(\"IN_OPEN: \");\n" " if (event-Emask & IN_CLOSE_NOWRITE)\n" " printf(\"IN_CLOSE_NOWRITE: \");\n" " if (event-Emask & 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 argc; ++i) {\n" " if (wd[i] == event-Ewd) {\n" " printf(\"%s/\", argv[i]);\n" " break;\n" " }\n" " }\n" "\\&\n" " /* Print the name of the file. */\n" "\\&\n" " if (event-Elen)\n" " printf(\"%s\", event-Ename);\n" "\\&\n" " /* Print type of filesystem object. */\n" "\\&\n" " if (event-Emask & 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 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 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 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 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(1), B(1), B(2), " "B(2), B(2), B(2), B(2), " "B(2), B(7)" msgstr "" "B(1), B(1), B(2), " "B(2), B(2), B(2), B(2), " "B(2), B(7)" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I in the Linux kernel source tree" msgstr "" "Файл I в дереве исходного кода ядра " "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 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 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 существует только когда событие возвращается для файла внутри " "отслеживаемого каталога; им определяется имя файла внутри отслеживаемого " "каталога. Это имя завершается 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(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(2), the kernel cycles through the range of possible " "watch descriptors (0 to B) 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 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(2) (или из-" "за удаления отслеживаемого файла, или размонтирования содержащей его " "файловой системы), все ожидающие непрочитанные события для этого дескриптора " "сторожка остаются доступными для чтения. Так как дескрипторы сторожков в " "дальнейшем циклически выделяются B(2), ядро поступательно " "проходит через диапазон возможных дескрипторов сторожков (от 0 до " "B). При выделении свободного дескриптора сторожка для выбранного " "номера не производится проверка того, есть ли какие-то ожидающие " "непрочитанные события в очереди inotify с таким номером или нет. То есть " "может случиться так, что дескриптор сторожка выделяется повторно даже когда " "существуют ожидающие непрочитанные события, оставшиеся от предыдущего " "выделения дескриптора сторожка с тем же номером; в результате приложение " "может прочесть эти события и посчитать их как принадлежащие файлу, " "связанному с новым повторно задействованным дескриптором сторожка. На " "практике, вероятность столкновения с этой ошибкой может быть чрезвычайно " "низка, так как для этого требуется, чтобы приложения циклически перебрало " "все B дескрипторов сторожков, освободило дескриптор сторожка и " "оставило непрочитанные события этого дескриптора сторожка в очереди, а затем " "повторно задействовало этот дескриптор сторожка. По этой причине и из-за " "того, что ещё никто не сообщал об этой ошибке в реальности, на момент " "актуальности 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 Eerrno.hE\n" #| "#include Epoll.hE\n" #| "#include Estdio.hE\n" #| "#include Estdlib.hE\n" #| "#include Esys/inotify.hE\n" #| "#include Eunistd.hE\n" msgid "" "#include Eerrno.hE\n" "#include Epoll.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/inotify.hE\n" "#include Eunistd.hE\n" "#include Estring.hE\n" msgstr "" "#include Eerrno.hE\n" "#include Epoll.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/inotify.hE\n" "#include Eunistd.hE\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= 0)\n" " break;\n" msgstr "" " if (len E= 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 buf + len;\n" #| " ptr += sizeof(struct inotify_event) + event-Elen) {\n" msgid "" " for (char *ptr = buf; ptr E buf + len;\n" " ptr += sizeof(struct inotify_event) + event-Elen) {\n" msgstr "" " for (ptr = buf; ptr E buf + len;\n" " ptr += sizeof(struct inotify_event) + event-Elen) {\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-Emask & IN_OPEN)\n" " printf(\"IN_OPEN: \");\n" " if (event-Emask & IN_CLOSE_NOWRITE)\n" " printf(\"IN_CLOSE_NOWRITE: \");\n" " if (event-Emask & IN_CLOSE_WRITE)\n" " printf(\"IN_CLOSE_WRITE: \");\n" msgstr "" " if (event-Emask & IN_OPEN)\n" " printf(\"IN_OPEN: \");\n" " if (event-Emask & IN_CLOSE_NOWRITE)\n" " printf(\"IN_CLOSE_NOWRITE: \");\n" " if (event-Emask & 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 argc; ++i) {\n" #| " if (wd[i] == event-Ewd) {\n" #| " printf(\"%s/\", argv[i]);\n" #| " break;\n" #| " }\n" #| " }\n" msgid "" " for (size_t i = 1; i E argc; ++i) {\n" " if (wd[i] == event-Ewd) {\n" " printf(\"%s/\", argv[i]);\n" " break;\n" " }\n" " }\n" msgstr "" " for (i = 1; i E argc; ++i) {\n" " if (wd[i] == event-Ewd) {\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-Elen)\n" " printf(\"%s\", event-Ename);\n" msgstr "" " if (event-Elen)\n" " printf(\"%s\", event-Ename);\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-Emask & IN_ISDIR)\n" " printf(\" [directory]\\en\");\n" " else\n" " printf(\" [file]\\en\");\n" " }\n" " }\n" "}\n" msgstr "" " if (event-Emask & 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 2) {\n" " printf(\"Usage: %s PATH [PATH ...]\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" " if (argc E 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 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 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 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 0) {\n" msgstr " if (poll_num E 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 0 && buf != \\[aq]\\en\\[aq])\n" " continue;\n" " break;\n" " }\n" msgstr "" " while (read(STDIN_FILENO, &buf, 1) E 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 #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "31 октября 2023 г." #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "Linux man-pages 6.06" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "Linux man-pages 6.7" #. 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" #. type: TH #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages (unreleased)" msgstr "Linux man-pages 6.7"