Dsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/filesystems/dnotifymodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/filesystems/dnotifymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/filesystems/dnotifymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/filesystems/dnotifymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/filesystems/dnotifymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/filesystems/dnotifymodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhT/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/filesystems/dnotify.rsthKubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h&Documentation/filesystems/dnotify.rst h]h)}(h%Documentation/filesystems/dnotify.rsth]h%Documentation/filesystems/dnotify.rst}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhKubh)}(h2王龙杰 Wang Longjie h]h)}(h1王龙杰 Wang Longjie h](h王龙杰 Wang Longjie <}(hj hhhNhNubh reference)}(hwang.longjie1@zte.com.cnh]hwang.longjie1@zte.com.cn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:wang.longjie1@zte.com.cnuh1j(hj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhsection)}(hhh](htitle)}(hLinux 目录通知h]hLinux 目录通知}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjXhhhhhK ubh block_quote)}(h(Stephen Rothwell h]h)}(h'Stephen Rothwell h](hStephen Rothwell <}(hjqhhhNhNubj))}(hsfr@canb.auug.org.auh]hsfr@canb.auug.org.au}(hjyhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:sfr@canb.auug.org.auuh1j(hjqubh>}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjmubah}(h]h ]h"]h$]h&]uh1jkhhhKhjXhhubh)}(h目录通知的目的是使用户应用程序能够在目录或目录中的任何文件发生变更时收到通知。基本机制包括应用程序 通过 fcntl(2) 调用在目录上注册通知,通知本身则通过信号传递。h]h目录通知的目的是使用户应用程序能够在目录或目录中的任何文件发生变更时收到通知。基本机制包括应用程序 通过 fcntl(2) 调用在目录上注册通知,通知本身则通过信号传递。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubh)}(he应用程序可以决定希望收到哪些 “事件” 的通知。当前已定义的事件如下:h]he应用程序可以决定希望收到哪些 “事件” 的通知。当前已定义的事件如下:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubjl)}(hX========= ===================================== DN_ACCESS 目录中的文件被访问(read) DN_MODIFY 目录中的文件被修改(write,truncate) DN_CREATE 目录中创建了文件 DN_DELETE 目录中的文件被取消链接 DN_RENAME 目录中的文件被重命名 DN_ATTRIB 目录中的文件属性被更改(chmod,chown) ========= ===================================== h]htable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthK%uh1jhjubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(h DN_ACCESSh]h DN_ACCESS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h%目录中的文件被访问(read)h]h%目录中的文件被访问(read)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h DN_MODIFYh]h DN_MODIFY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h/目录中的文件被修改(write,truncate)h]h/目录中的文件被修改(write,truncate)}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h DN_CREATEh]h DN_CREATE}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubah}(h]h ]h"]h$]h&]uh1jhjPubj)}(hhh]h)}(h目录中创建了文件h]h目录中创建了文件}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjjubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h DN_DELETEh]h DN_DELETE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h!目录中的文件被取消链接h]h!目录中的文件被取消链接}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h DN_RENAMEh]h DN_RENAME}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h目录中的文件被重命名h]h目录中的文件被重命名}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h DN_ATTRIBh]h DN_ATTRIB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h2目录中的文件属性被更改(chmod,chown)h]h2目录中的文件属性被更改(chmod,chown)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jkhhhKhjXhhubh)}(h通常,应用程序必须在每次通知后重新注册,但如果将 DN_MULTISHOT 与事件掩码进行或运算,则注册 将一直保持有效,直到被显式移除(通过注册为不接收任何事件)。h]h通常,应用程序必须在每次通知后重新注册,但如果将 DN_MULTISHOT 与事件掩码进行或运算,则注册 将一直保持有效,直到被显式移除(通过注册为不接收任何事件)。}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubh)}(hXG默认情况下,SIGIO 信号将被传递给进程,且不附带其他有用的信息。但是,如果使用 F_SETSIG fcntl(2) 调用让内核知道要传递哪个信号,一个 siginfo 结构体将被传递给信号处理程序,该结构体的 si_fd 成员将 包含与发生事件的目录相关联的文件描述符。h]hXG默认情况下,SIGIO 信号将被传递给进程,且不附带其他有用的信息。但是,如果使用 F_SETSIG fcntl(2) 调用让内核知道要传递哪个信号,一个 siginfo 结构体将被传递给信号处理程序,该结构体的 si_fd 成员将 包含与发生事件的目录相关联的文件描述符。}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjXhhubh)}(h应用程序最好选择一个实时信号(SIGRTMIN + ),以便通知可以被排队。如果指定了 DN_MULTISHOT, 这一点尤为重要。注意,SIGRTMIN 通常是被阻塞的,因此最好使用(至少)SIGRTMIN + 1。h]h应用程序最好选择一个实时信号(SIGRTMIN + ),以便通知可以被排队。如果指定了 DN_MULTISHOT, 这一点尤为重要。注意,SIGRTMIN 通常是被阻塞的,因此最好使用(至少)SIGRTMIN + 1。}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjXhhubjW)}(hhh](j\)}(h%实现预期(特性与缺陷 :-))h]h%实现预期(特性与缺陷 :-))}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjohhhhhK*ubh)}(hX6对于文件的任何本地访问,通知都应能正常工作,即使实际文件系统位于远程服务器上。这意味着,对本地用户 模式服务器提供的文件的远程访问应能触发通知。同样的,对本地内核 NFS 服务器提供的文件的远程访问 也应能触发通知。h]hX6对于文件的任何本地访问,通知都应能正常工作,即使实际文件系统位于远程服务器上。这意味着,对本地用户 模式服务器提供的文件的远程访问应能触发通知。同样的,对本地内核 NFS 服务器提供的文件的远程访问 也应能触发通知。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hjohhubh)}(hXM为了尽可能减小对文件系统代码的影响,文件硬链接的问题已被忽略。因此,如果一个文件(x)存在于两个 目录(a 和 b)中,通过名称”a/x”对该文件进行的更改应通知给期望接收目录“a”通知的程序,但不会 通知给期望接收目录“b”通知的程序。h]hXM为了尽可能减小对文件系统代码的影响,文件硬链接的问题已被忽略。因此,如果一个文件(x)存在于两个 目录(a 和 b)中,通过名称”a/x”对该文件进行的更改应通知给期望接收目录“a”通知的程序,但不会 通知给期望接收目录“b”通知的程序。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjohhubh)}(h]此外,取消链接的文件仍会在它们链接到的最后一个目录中触发通知。h]h]此外,取消链接的文件仍会在它们链接到的最后一个目录中触发通知。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjohhubeh}(h]id1ah ]h"]%实现预期(特性与缺陷 :-))ah$]h&]uh1jVhjXhhhhhK*ubjW)}(hhh](j\)}(h配置h]h配置}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhK7ubh)}(hsDnotify 由 CONFIG_DNOTIFY 配置选项控制。禁用该选项时,fcntl(fd, F_NOTIFY, ...) 将返 回 -EINVAL。h]hsDnotify 由 CONFIG_DNOTIFY 配置选项控制。禁用该选项时,fcntl(fd, F_NOTIFY, ...) 将返 回 -EINVAL。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjhhubeh}(h]id2ah ]h"]配置ah$]h&]uh1jVhjXhhhhhK7ubjW)}(hhh](j\)}(h示例h]h示例}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhK=ubh)}(hK具体示例可参见 tools/testing/selftests/filesystems/dnotify_test.c。h]hK具体示例可参见 tools/testing/selftests/filesystems/dnotify_test.c。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK>hjhhubeh}(h]id3ah ]h"]示例ah$]h&]uh1jVhjXhhhhhK=ubjW)}(hhh](j\)}(h注意h]h注意}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhKAubh)}(h从 Linux 2.6.13 开始,dnotify 已被 inotify 取代。有关 inotify 的更多信息,请参见 Documentation/filesystems/inotify.rst。h]h从 Linux 2.6.13 开始,dnotify 已被 inotify 取代。有关 inotify 的更多信息,请参见 Documentation/filesystems/inotify.rst。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjhhubeh}(h]id4ah ]h"]注意ah$]h&]uh1jVhjXhhhhhKAubeh}(h]linuxah ]h"]linux 目录通知ah$]h&]uh1jVhhhhhhhK ubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j[N generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjQerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j,j)jjjjjjj$j!u nametypes}(j,jjjj$uh}(j)jXjjojjjjj!ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j_KsRparse_messages]transform_messages] transformerN include_log]8Documentation/translations/zh_CN/filesystems/dnotify.rst(NNNNta decorationNhhub.