diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /templates/man7/inotify.7.pot | |
parent | Initial commit. (diff) | |
download | manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip |
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'templates/man7/inotify.7.pot')
-rw-r--r-- | templates/man7/inotify.7.pot | 2109 |
1 files changed, 2109 insertions, 0 deletions
diff --git a/templates/man7/inotify.7.pot b/templates/man7/inotify.7.pot new file mode 100644 index 00000000..9c1a84d5 --- /dev/null +++ b/templates/man7/inotify.7.pot @@ -0,0 +1,2109 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-03-01 16:58+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: TH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "inotify" +msgstr "" + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "2023-10-31" +msgstr "" + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "Linux man-pages 6.06" +msgstr "" + +#. 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 "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "DESCRIPTION" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<inotify> API provides a mechanism for monitoring filesystem events. " +"Inotify can be used to monitor individual files, or to monitor directories. " +"When a directory is monitored, inotify will return events for the directory " +"itself, and for files inside the directory." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<inotify_init>(2) creates an inotify instance and returns a file " +"descriptor referring to the inotify instance. The more recent " +"B<inotify_init1>(2) is like B<inotify_init>(2), but has a I<flags> argument " +"that provides access to some extra functionality." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<inotify_add_watch>(2) manipulates the \"watch list\" associated with an " +"inotify instance. Each item (\"watch\") in the watch list specifies the " +"pathname of a file or directory, along with some set of events that the " +"kernel should monitor for the file referred to by that pathname. " +"B<inotify_add_watch>(2) either creates a new watch item, or modifies an " +"existing watch. Each watch has a unique \"watch descriptor\", an integer " +"returned by B<inotify_add_watch>(2) when the watch is created." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When events occur for monitored files and directories, those events are made " +"available to the application as structured data that can be read from the " +"inotify file descriptor using B<read>(2) (see below)." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "B<inotify_rm_watch>(2) removes an item from an inotify watch list." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When all file descriptors referring to an inotify instance have been closed " +"(using B<close>(2)), the underlying object and its resources are freed for " +"reuse by the kernel; all associated watches are automatically freed." +msgstr "" + +#. 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 "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"To determine what events have occurred, an application B<read>(2)s from the " +"inotify file descriptor. If no events have so far occurred, then, assuming " +"a blocking file descriptor, B<read>(2) will block until at least one event " +"occurs (unless interrupted by a signal, in which case the call fails with " +"the error B<EINTR>; see B<signal>(7))." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Each successful B<read>(2) returns a buffer containing one or more of the " +"following structures:" +msgstr "" + +#. #-#-#-#-# archlinux: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# debian-bookworm: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: http://sources.redhat.com/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# debian-unstable: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# fedora-40: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# fedora-rawhide: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# mageia-cauldron: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# opensuse-leap-15-6: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#. #-#-#-#-# opensuse-tumbleweed: inotify.7.pot (PACKAGE VERSION) #-#-#-#-# +#. FIXME . The type of the 'wd' field should probably be "int32_t". +#. I submitted a patch to fix this. See the LKML thread +#. "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 +#. glibc bug filed: https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"struct inotify_event {\n" +" int wd; /* Watch descriptor */\n" +" uint32_t mask; /* Mask describing event */\n" +" uint32_t cookie; /* Unique cookie associating related\n" +" events (for rename(2)) */\n" +" uint32_t len; /* Size of I<name> field */\n" +" char name[]; /* Optional null-terminated name */\n" +"};\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<wd> identifies the watch for which this event occurs. It is one of the " +"watch descriptors returned by a previous call to B<inotify_add_watch>(2)." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<mask> contains bits that describe the event that occurred (see below)." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<cookie> is a unique integer that connects related events. Currently, this " +"is used only for rename events, and allows the resulting pair of " +"B<IN_MOVED_FROM> and B<IN_MOVED_TO> events to be connected by the " +"application. For all other event types, I<cookie> is set to 0." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<name> field is present only when an event is returned for a file " +"inside a watched directory; it identifies the filename within the watched " +"directory. This filename is null-terminated, and may include further null " +"bytes (\\[aq]\\e0\\[aq]) to align subsequent reads to a suitable address " +"boundary." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<len> field counts all of the bytes in I<name>, including the null " +"bytes; the length of each I<inotify_event> structure is thus I<sizeof(struct " +"inotify_event)+len>." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The behavior when the buffer given to B<read>(2) is too small to return " +"information about the next event depends on the kernel version: before Linux " +"2.6.21, B<read>(2) returns 0; since Linux 2.6.21, B<read>(2) fails with " +"the error B<EINVAL>. Specifying a buffer of size" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "sizeof(struct inotify_event) + NAME_MAX + 1\n" +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<inotify_add_watch>(2) I<mask> argument and the I<mask> field of the " +"I<inotify_event> structure returned when B<read>(2)ing an inotify file " +"descriptor are both bit masks identifying inotify events. The following " +"bits can be specified in I<mask> when calling B<inotify_add_watch>(2) and " +"may be returned in the I<mask> field returned by B<read>(2):" +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ACCESS> (+)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File was accessed (e.g., B<read>(2), B<execve>(2))." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ATTRIB> (*)" +msgstr "" + +#. 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 +msgid "" +"Metadata changed\\[em]for example, permissions (e.g., B<chmod>(2)), " +"timestamps (e.g., B<utimensat>(2)), extended attributes (B<setxattr>(2)), " +"link count (since Linux 2.6.25; e.g., for the target of B<link>(2) and for " +"B<unlink>(2)), and user/group ID (e.g., B<chown>(2))." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_CLOSE_WRITE> (+)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File opened for writing was closed." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_CLOSE_NOWRITE> (*)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File or directory not opened for writing was closed." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_CREATE> (+)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"File/directory created in watched directory (e.g., B<open>(2) B<O_CREAT>, " +"B<mkdir>(2), B<link>(2), B<symlink>(2), B<bind>(2) on a UNIX domain socket)." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_DELETE> (+)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File/directory deleted from watched directory." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_DELETE_SELF>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Watched file/directory was itself deleted. (This event also occurs if an " +"object is moved to another filesystem, since B<mv>(1) in effect copies the " +"file to the other filesystem and then deletes it from the original " +"filesystem.) In addition, an B<IN_IGNORED> event will subsequently be " +"generated for the watch descriptor." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MODIFY> (+)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "File was modified (e.g., B<write>(2), B<truncate>(2))." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MOVE_SELF>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Watched file/directory was itself moved." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MOVED_FROM> (+)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generated for the directory containing the old filename when a file is " +"renamed." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MOVED_TO> (+)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generated for the directory containing the new filename when a file is " +"renamed." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_OPEN> (*)" +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "When monitoring a directory:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"the events marked above with an asterisk (*) can occur both for the " +"directory itself and for objects inside the directory; and" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"the events marked with a plus sign (+) occur only for objects inside the " +"directory (not for the directory itself)." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<Note>: when monitoring a directory, events are not generated for the files " +"inside the directory when the events are performed via a pathname (i.e., a " +"link) that lies outside the monitored directory." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When events are generated for objects inside a watched directory, the " +"I<name> field in the returned I<inotify_event> structure identifies the name " +"of the file within the directory." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<IN_ALL_EVENTS> macro is defined as a bit mask of all of the above " +"events. This macro can be used as the I<mask> argument when calling " +"B<inotify_add_watch>(2)." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Two additional convenience macros are defined:" +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MOVE>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Equates to B<IN_MOVED_FROM | IN_MOVED_TO>." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_CLOSE>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Equates to B<IN_CLOSE_WRITE | IN_CLOSE_NOWRITE>." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The following further bits can be specified in I<mask> when calling " +"B<inotify_add_watch>(2):" +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_DONT_FOLLOW> (since Linux 2.6.15)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Don't dereference I<pathname> if it is a symbolic link." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_EXCL_UNLINK> (since Linux 2.6.36)" +msgstr "" + +#. commit 8c1934c8d70b22ca8333b216aec6c7d09fdbd6a6 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"By default, when watching events on the children of a directory, events are " +"generated for children even after they have been unlinked from the " +"directory. This can result in large numbers of uninteresting events for " +"some applications (e.g., if watching I</tmp>, in which many applications " +"create temporary files whose names are immediately unlinked). Specifying " +"B<IN_EXCL_UNLINK> changes the default behavior, so that events are not " +"generated for children after they have been unlinked from the watched " +"directory." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MASK_ADD>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If a watch instance already exists for the filesystem object corresponding " +"to I<pathname>, add (OR) the events in I<mask> to the watch mask (instead of " +"replacing the mask); the error B<EINVAL> results if B<IN_MASK_CREATE> is " +"also specified." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ONESHOT>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Monitor the filesystem object corresponding to I<pathname> for one event, " +"then remove from watch list." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ONLYDIR> (since Linux 2.6.15)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Watch I<pathname> only if it is a directory; the error B<ENOTDIR> results if " +"I<pathname> is not a directory. Using this flag provides an application " +"with a race-free way of ensuring that the monitored object is a directory." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_MASK_CREATE> (since Linux 4.18)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Watch I<pathname> only if it does not already have a watch associated with " +"it; the error B<EEXIST> results if I<pathname> is already being watched." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Using this flag provides an application with a way of ensuring that new " +"watches do not modify existing ones. This is useful because multiple paths " +"may refer to the same inode, and multiple calls to B<inotify_add_watch>(2) " +"without this flag may clobber existing watch masks." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The following bits may be set in the I<mask> field returned by B<read>(2):" +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_IGNORED>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Watch was removed explicitly (B<inotify_rm_watch>(2)) or automatically " +"(file was deleted, or filesystem was unmounted). See also BUGS." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_ISDIR>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Subject of this event is a directory." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_Q_OVERFLOW>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Event queue overflowed (I<wd> is -1 for this event)." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<IN_UNMOUNT>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Filesystem containing watched object was unmounted. In addition, an " +"B<IN_IGNORED> event will subsequently be generated for the watch descriptor." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Examples" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suppose an application is watching the directory I<dir> and the file I<dir/" +"myfile> for all events. The examples below show some events that will be " +"generated for these two objects." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_OPEN> events for both I<dir> and I<dir/myfile>." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_ACCESS> events for both I<dir> and I<dir/myfile>." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_MODIFY> events for both I<dir> and I<dir/myfile>." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_ATTRIB> events for both I<dir> and I<dir/myfile>." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates B<IN_CLOSE_WRITE> events for both I<dir> and I<dir/myfile>." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suppose an application is watching the directories I<dir1> and I<dir2>, and " +"the file I<dir1/myfile>. The following examples show some events that may " +"be generated." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates an B<IN_ATTRIB> event for I<myfile> and an B<IN_CREATE> event for " +"I<dir2>." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates an B<IN_MOVED_FROM> event for I<dir1>, an B<IN_MOVED_TO> event for " +"I<dir2>, and an B<IN_MOVE_SELF> event for I<myfile>. The B<IN_MOVED_FROM> " +"and B<IN_MOVED_TO> events will have the same I<cookie> value." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suppose that I<dir1/xx> and I<dir2/yy> are (the only) links to the same " +"file, and an application is watching I<dir1>, I<dir2>, I<dir1/xx>, and " +"I<dir2/yy>. Executing the following calls in the order given below will " +"generate the following events:" +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates an B<IN_ATTRIB> event for I<xx> (because its link count changes) " +"and an B<IN_DELETE> event for I<dir2>." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates B<IN_ATTRIB>, B<IN_DELETE_SELF>, and B<IN_IGNORED> events for " +"I<xx>, and an B<IN_DELETE> event for I<dir1>." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suppose an application is watching the directory I<dir> and (the empty) " +"directory I<dir/subdir>. The following examples show some events that may " +"be generated." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Generates an B<IN_CREATE | IN_ISDIR> event for I<dir>." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Generates B<IN_DELETE_SELF> and B<IN_IGNORED> events for I<subdir>, and an " +"B<IN_DELETE | IN_ISDIR> event for I<dir>." +msgstr "" + +#. 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 "" + +#. 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 "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I</proc/sys/fs/inotify/max_queued_events>" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The value in this file is used when an application calls B<inotify_init>(2) " +"to set an upper limit on the number of events that can be queued to the " +"corresponding inotify instance. Events in excess of this limit are dropped, " +"but an B<IN_Q_OVERFLOW> event is always generated." +msgstr "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I</proc/sys/fs/inotify/max_user_instances>" +msgstr "" + +#. 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 "" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I</proc/sys/fs/inotify/max_user_watches>" +msgstr "" + +#. 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 "" + +#. 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 +msgid "" +"Inotify was merged into Linux 2.6.13. The required library interfaces were " +"added in glibc 2.4. (B<IN_DONT_FOLLOW>, B<IN_MASK_ADD>, and B<IN_ONLYDIR> " +"were added in glibc 2.5.)" +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NOTES" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Inotify file descriptors can be monitored using B<select>(2), B<poll>(2), " +"and B<epoll>(7). When an event is available, the file descriptor indicates " +"as readable." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Since Linux 2.6.25, signal-driven I/O notification is available for inotify " +"file descriptors; see the discussion of B<F_SETFL> (for setting the " +"B<O_ASYNC> flag), B<F_SETOWN>, and B<F_SETSIG> in B<fcntl>(2). The " +"I<siginfo_t> structure (described in B<sigaction>(2)) that is passed to the " +"signal handler has the following fields set: I<si_fd> is set to the inotify " +"file descriptor number; I<si_signo> is set to the signal number; I<si_code> " +"is set to B<POLL_IN>; and B<POLLIN> is set in I<si_band>." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If successive output inotify events produced on the inotify file descriptor " +"are identical (same I<wd>, I<mask>, I<cookie>, and I<name>), then they are " +"coalesced into a single event if the older event has not yet been read (but " +"see BUGS). This reduces the amount of kernel memory required for the event " +"queue, but also means that an application can't use inotify to reliably " +"count file events." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The set of watch descriptors that is being monitored via an inotify file " +"descriptor can be viewed via the entry for the inotify file descriptor in " +"the process's I</proc/>pidI</fdinfo> directory. See B<proc>(5) for further " +"details. The B<FIONREAD> B<ioctl>(2) returns the number of bytes available " +"to read from an inotify file descriptor." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Inotify reports only events that a user-space program triggers through the " +"filesystem API. As a result, it does not catch remote events that occur on " +"network filesystems. (Applications must fall back to polling the filesystem " +"to catch such events.) Furthermore, various pseudo-filesystems such as I</" +"proc>, I</sys>, and I</dev/pts> are not monitorable with inotify." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The inotify API does not report file accesses and modifications that may " +"occur because of B<mmap>(2), B<msync>(2), and B<munmap>(2)." +msgstr "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As noted above, the B<IN_MOVED_FROM> and B<IN_MOVED_TO> event pair that is " +"generated by B<rename>(2) can be matched up via their shared cookie value. " +"However, the task of matching has some challenges." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"These two events are usually consecutive in the event stream available when " +"reading from the inotify file descriptor. However, this is not guaranteed. " +"If multiple processes are triggering events for monitored objects, then (on " +"rare occasions) an arbitrary number of other events may appear between the " +"B<IN_MOVED_FROM> and B<IN_MOVED_TO> events. Furthermore, it is not " +"guaranteed that the event pair is atomically inserted into the queue: there " +"may be a brief interval where the B<IN_MOVED_FROM> has appeared, but the " +"B<IN_MOVED_TO> has not." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Matching up the B<IN_MOVED_FROM> and B<IN_MOVED_TO> event pair generated by " +"B<rename>(2) is thus inherently racy. (Don't forget that if an object is " +"renamed outside of a monitored directory, there may not even be an " +"B<IN_MOVED_TO> event.) Heuristic approaches (e.g., assume the events are " +"always consecutive) can be used to ensure a match in most cases, but will " +"inevitably miss some cases, causing the application to perceive the " +"B<IN_MOVED_FROM> and B<IN_MOVED_TO> events as being unrelated. If watch " +"descriptors are destroyed and re-created as a result, then those watch " +"descriptors will be inconsistent with the watch descriptors in any pending " +"events. (Re-creating the inotify file descriptor and rebuilding the cache " +"may be useful to deal with this scenario.)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Applications should also allow for the possibility that the B<IN_MOVED_FROM> " +"event was the last event that could fit in the buffer returned by the " +"current call to B<read>(2), and the accompanying B<IN_MOVED_TO> event might " +"be fetched only on the next B<read>(2), which should be done with a (small) " +"timeout to allow for the fact that insertion of the " +"B<IN_MOVED_FROM>+B<IN_MOVED_TO> event pair is not atomic, and also the " +"possibility that there may not be any B<IN_MOVED_TO> event." +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "BUGS" +msgstr "" + +#. commit 820c12d5d6c0890bc93dd63893924a13041fdc35 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Before Linux 3.19, B<fallocate>(2) did not create any inotify events. " +"Since Linux 3.19, calls to B<fallocate>(2) generate B<IN_MODIFY> events." +msgstr "" + +#. 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 +msgid "Before Linux 2.6.16, the B<IN_ONESHOT> I<mask> flag does not work." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As originally designed and implemented, the B<IN_ONESHOT> flag did not cause " +"an B<IN_IGNORED> event to be generated when the watch was dropped after one " +"event. However, as an unintended effect of other changes, since Linux " +"2.6.36, an B<IN_IGNORED> event is generated in this case." +msgstr "" + +#. commit 1c17d18e3775485bf1e0ce79575eb637a94494a2 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Before Linux 2.6.25, the kernel code that was intended to coalesce " +"successive identical events (i.e., the two most recent events could " +"potentially be coalesced if the older had not yet been read) instead " +"checked if the most recent event could be coalesced with the I<oldest> " +"unread event." +msgstr "" + +#. FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=77111 +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +msgid "" +"When a watch descriptor is removed by calling B<inotify_rm_watch>(2) (or " +"because a watch file is deleted or the filesystem that contains it is " +"unmounted), any pending unread events for that watch descriptor remain " +"available to read. As watch descriptors are subsequently allocated with " +"B<inotify_add_watch>(2), the kernel cycles through the range of possible " +"watch descriptors (1 to B<INT_MAX>) incrementally. When allocating a free " +"watch descriptor, no check is made to see whether that watch descriptor " +"number has any pending unread events in the inotify queue. Thus, it can " +"happen that a watch descriptor is reallocated even when pending unread " +"events exist for a previous incarnation of that watch descriptor number, " +"with the result that the application might then read those events and " +"interpret them as belonging to the file associated with the newly recycled " +"watch descriptor. In practice, the likelihood of hitting this bug may be " +"extremely low, since it requires that an application cycle through " +"B<INT_MAX> watch descriptors, release a watch descriptor while leaving " +"unread events for that watch descriptor in the queue, and then recycle that " +"watch descriptor. For this reason, and because there have been no reports " +"of the bug occurring in real-world applications, as of Linux 3.15, no kernel " +"changes have yet been made to eliminate this possible bug." +msgstr "" + +#. 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 +msgid "" +"The following program demonstrates the usage of the inotify API. It marks " +"the directories passed as a command-line arguments and waits for events of " +"type B<IN_OPEN>, B<IN_CLOSE_NOWRITE>, and B<IN_CLOSE_WRITE>." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The following output was recorded while editing the file I</home/user/temp/" +"foo> and listing directory I</tmp>. Before the file and the directory were " +"opened, B<IN_OPEN> events occurred. After the file was closed, an " +"B<IN_CLOSE_WRITE> event occurred. After the directory was closed, an " +"B<IN_CLOSE_NOWRITE> event occurred. Execution of the program ended when the " +"user pressed the ENTER key." +msgstr "" + +#. 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 +#, 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" +"\\&\n" +"Listening for events stopped.\n" +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Program source" +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +#, no-wrap +msgid "" +"#include E<lt>errno.hE<gt>\n" +"#include E<lt>poll.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/inotify.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" +"#include E<lt>string.hE<gt>\n" +"\\&\n" +"/* Read all available inotify events from the file descriptor \\[aq]fd\\[aq].\n" +" wd is the table of watch descriptors for the directories in argv.\n" +" argc is the length of wd and argv.\n" +" argv is the list of watched directories.\n" +" Entry 0 of wd and argv is unused. */\n" +"\\&\n" +"static void\n" +"handle_events(int fd, int *wd, int argc, char* argv[])\n" +"{\n" +" /* Some systems cannot read integer variables if they are not\n" +" properly aligned. On other systems, incorrect alignment may\n" +" decrease performance. Hence, the buffer used for reading from\n" +" the inotify file descriptor should have the same alignment as\n" +" struct inotify_event. */\n" +"\\&\n" +" char buf[4096]\n" +" __attribute__ ((aligned(__alignof__(struct inotify_event))));\n" +" const struct inotify_event *event;\n" +" ssize_t len;\n" +"\\&\n" +" /* Loop while events can be read from inotify file descriptor. */\n" +"\\&\n" +" for (;;) {\n" +"\\&\n" +" /* Read some events. */\n" +"\\&\n" +" len = read(fd, buf, sizeof(buf));\n" +" if (len == -1 && errno != EAGAIN) {\n" +" perror(\"read\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" /* If the nonblocking read() found no events to read, then\n" +" it returns -1 with errno set to EAGAIN. In that case,\n" +" we exit the loop. */\n" +"\\&\n" +" if (len E<lt>= 0)\n" +" break;\n" +"\\&\n" +" /* Loop over all events in the buffer. */\n" +"\\&\n" +" for (char *ptr = buf; ptr E<lt> buf + len;\n" +" ptr += sizeof(struct inotify_event) + event-E<gt>len) {\n" +"\\&\n" +" event = (const struct inotify_event *) ptr;\n" +"\\&\n" +" /* Print event type. */\n" +"\\&\n" +" if (event-E<gt>mask & IN_OPEN)\n" +" printf(\"IN_OPEN: \");\n" +" if (event-E<gt>mask & IN_CLOSE_NOWRITE)\n" +" printf(\"IN_CLOSE_NOWRITE: \");\n" +" if (event-E<gt>mask & IN_CLOSE_WRITE)\n" +" printf(\"IN_CLOSE_WRITE: \");\n" +"\\&\n" +" /* Print the name of the watched directory. */\n" +"\\&\n" +" for (size_t i = 1; i E<lt> argc; ++i) {\n" +" if (wd[i] == event-E<gt>wd) {\n" +" printf(\"%s/\", argv[i]);\n" +" break;\n" +" }\n" +" }\n" +"\\&\n" +" /* Print the name of the file. */\n" +"\\&\n" +" if (event-E<gt>len)\n" +" printf(\"%s\", event-E<gt>name);\n" +"\\&\n" +" /* Print type of filesystem object. */\n" +"\\&\n" +" if (event-E<gt>mask & IN_ISDIR)\n" +" printf(\" [directory]\\en\");\n" +" else\n" +" printf(\" [file]\\en\");\n" +" }\n" +" }\n" +"}\n" +"\\&\n" +"int\n" +"main(int argc, char* argv[])\n" +"{\n" +" char buf;\n" +" int fd, i, poll_num;\n" +" int *wd;\n" +" nfds_t nfds;\n" +" struct pollfd fds[2];\n" +"\\&\n" +" if (argc E<lt> 2) {\n" +" printf(\"Usage: %s PATH [PATH ...]\\en\", argv[0]);\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" printf(\"Press ENTER key to terminate.\\en\");\n" +"\\&\n" +" /* Create the file descriptor for accessing the inotify API. */\n" +"\\&\n" +" fd = inotify_init1(IN_NONBLOCK);\n" +" if (fd == -1) {\n" +" perror(\"inotify_init1\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" /* Allocate memory for watch descriptors. */\n" +"\\&\n" +" wd = calloc(argc, sizeof(int));\n" +" if (wd == NULL) {\n" +" perror(\"calloc\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" /* Mark directories for events\n" +" - file was opened\n" +" - file was closed */\n" +"\\&\n" +" for (i = 1; i E<lt> argc; i++) {\n" +" wd[i] = inotify_add_watch(fd, argv[i],\n" +" IN_OPEN | IN_CLOSE);\n" +" if (wd[i] == -1) {\n" +" fprintf(stderr, \"Cannot watch \\[aq]%s\\[aq]: %s\\en\",\n" +" argv[i], strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +" }\n" +"\\&\n" +" /* Prepare for polling. */\n" +"\\&\n" +" nfds = 2;\n" +"\\&\n" +" fds[0].fd = STDIN_FILENO; /* Console input */\n" +" fds[0].events = POLLIN;\n" +"\\&\n" +" fds[1].fd = fd; /* Inotify input */\n" +" fds[1].events = POLLIN;\n" +"\\&\n" +" /* Wait for events and/or terminal input. */\n" +"\\&\n" +" printf(\"Listening for events.\\en\");\n" +" while (1) {\n" +" poll_num = poll(fds, nfds, -1);\n" +" if (poll_num == -1) {\n" +" if (errno == EINTR)\n" +" continue;\n" +" perror(\"poll\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" if (poll_num E<gt> 0) {\n" +"\\&\n" +" if (fds[0].revents & POLLIN) {\n" +"\\&\n" +" /* Console input is available. Empty stdin and quit. */\n" +"\\&\n" +" while (read(STDIN_FILENO, &buf, 1) E<gt> 0 && buf != \\[aq]\\en\\[aq])\n" +" continue;\n" +" break;\n" +" }\n" +"\\&\n" +" if (fds[1].revents & POLLIN) {\n" +"\\&\n" +" /* Inotify events are available. */\n" +"\\&\n" +" handle_events(fd, wd, argc, argv);\n" +" }\n" +" }\n" +" }\n" +"\\&\n" +" printf(\"Listening for events stopped.\\en\");\n" +"\\&\n" +" /* Close inotify file descriptor. */\n" +"\\&\n" +" close(fd);\n" +"\\&\n" +" free(wd);\n" +" exit(EXIT_SUCCESS);\n" +"}\n" +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "SEE ALSO" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<inotifywait>(1), B<inotifywatch>(1), B<inotify_add_watch>(2), " +"B<inotify_init>(2), B<inotify_init1>(2), B<inotify_rm_watch>(2), B<read>(2), " +"B<stat>(2), B<fanotify>(7)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<Documentation/filesystems/inotify.txt> in the Linux kernel source tree" +msgstr "" + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "2023-02-05" +msgstr "" + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "Linux man-pages 6.03" +msgstr "" + +#. type: Plain text +#: debian-bookworm +msgid "" +"The I<name> field is present only when an event is returned for a file " +"inside a watched directory; it identifies the filename within the watched " +"directory. This filename is null-terminated, and may include further null " +"bytes (\\[aq]\\e0\\[aq]) to align subsequent reads to a suitable address " +"boundary." +msgstr "" + +#. type: SH +#: debian-bookworm +#, no-wrap +msgid "VERSIONS" +msgstr "" + +#. type: Plain text +#: debian-bookworm +msgid "The inotify API is Linux-specific." +msgstr "" + +#. FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=77111 +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +msgid "" +"When a watch descriptor is removed by calling B<inotify_rm_watch>(2) (or " +"because a watch file is deleted or the filesystem that contains it is " +"unmounted), any pending unread events for that watch descriptor remain " +"available to read. As watch descriptors are subsequently allocated with " +"B<inotify_add_watch>(2), the kernel cycles through the range of possible " +"watch descriptors (0 to B<INT_MAX>) incrementally. When allocating a free " +"watch descriptor, no check is made to see whether that watch descriptor " +"number has any pending unread events in the inotify queue. Thus, it can " +"happen that a watch descriptor is reallocated even when pending unread " +"events exist for a previous incarnation of that watch descriptor number, " +"with the result that the application might then read those events and " +"interpret them as belonging to the file associated with the newly recycled " +"watch descriptor. In practice, the likelihood of hitting this bug may be " +"extremely low, since it requires that an application cycle through " +"B<INT_MAX> watch descriptors, release a watch descriptor while leaving " +"unread events for that watch descriptor in the queue, and then recycle that " +"watch descriptor. For this reason, and because there have been no reports " +"of the bug occurring in real-world applications, as of Linux 3.15, no kernel " +"changes have yet been made to eliminate this possible bug." +msgstr "" + +#. 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 "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "Listening for events stopped.\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"#include E<lt>errno.hE<gt>\n" +"#include E<lt>poll.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/inotify.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" +"#include E<lt>string.hE<gt>\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +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 "" + +#. 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 "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" char buf[4096]\n" +" __attribute__ ((aligned(__alignof__(struct inotify_event))));\n" +" const struct inotify_event *event;\n" +" ssize_t len;\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Loop while events can be read from inotify file descriptor. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " for (;;) {\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Read some events. */\n" +msgstr "" + +#. 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 "" + +#. 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 "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (len E<lt>= 0)\n" +" break;\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Loop over all events in the buffer. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" for (char *ptr = buf; ptr E<lt> buf + len;\n" +" ptr += sizeof(struct inotify_event) + event-E<gt>len) {\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " event = (const struct inotify_event *) ptr;\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Print event type. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (event-E<gt>mask & IN_OPEN)\n" +" printf(\"IN_OPEN: \");\n" +" if (event-E<gt>mask & IN_CLOSE_NOWRITE)\n" +" printf(\"IN_CLOSE_NOWRITE: \");\n" +" if (event-E<gt>mask & IN_CLOSE_WRITE)\n" +" printf(\"IN_CLOSE_WRITE: \");\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Print the name of the watched directory. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" for (size_t i = 1; i E<lt> argc; ++i) {\n" +" if (wd[i] == event-E<gt>wd) {\n" +" printf(\"%s/\", argv[i]);\n" +" break;\n" +" }\n" +" }\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Print the name of the file. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (event-E<gt>len)\n" +" printf(\"%s\", event-E<gt>name);\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Print type of filesystem object. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (event-E<gt>mask & IN_ISDIR)\n" +" printf(\" [directory]\\en\");\n" +" else\n" +" printf(\" [file]\\en\");\n" +" }\n" +" }\n" +"}\n" +msgstr "" + +#. 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 "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (argc E<lt> 2) {\n" +" printf(\"Usage: %s PATH [PATH ...]\\en\", argv[0]);\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " printf(\"Press ENTER key to terminate.\\en\");\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Create the file descriptor for accessing the inotify API. */\n" +msgstr "" + +#. 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 "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Allocate memory for watch descriptors. */\n" +msgstr "" + +#. 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 "" + +#. 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 "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" for (i = 1; i E<lt> argc; i++) {\n" +" wd[i] = inotify_add_watch(fd, argv[i],\n" +" IN_OPEN | IN_CLOSE);\n" +" if (wd[i] == -1) {\n" +" fprintf(stderr, \"Cannot watch \\[aq]%s\\[aq]: %s\\en\",\n" +" argv[i], strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +" }\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Prepare for polling. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " nfds = 2;\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" fds[0].fd = STDIN_FILENO; /* Console input */\n" +" fds[0].events = POLLIN;\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" fds[1].fd = fd; /* Inotify input */\n" +" fds[1].events = POLLIN;\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Wait for events and/or terminal input. */\n" +msgstr "" + +#. 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 "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " if (poll_num E<gt> 0) {\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " if (fds[0].revents & POLLIN) {\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Console input is available. Empty stdin and quit. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" while (read(STDIN_FILENO, &buf, 1) E<gt> 0 && buf != \\[aq]\\en\\[aq])\n" +" continue;\n" +" break;\n" +" }\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " if (fds[1].revents & POLLIN) {\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Inotify events are available. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" handle_events(fd, wd, argc, argv);\n" +" }\n" +" }\n" +" }\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " printf(\"Listening for events stopped.\\en\");\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Close inotify file descriptor. */\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " close(fd);\n" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" free(wd);\n" +" exit(EXIT_SUCCESS);\n" +"}\n" +msgstr "" + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "2023-07-08" +msgstr "" + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "Linux man-pages 6.05.01" +msgstr "" + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "2023-03-30" +msgstr "" + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "Linux man-pages 6.04" +msgstr "" |