1 .\" Copyright (c) 1993 Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de)
2 .\" and copyright (c) 1999 Andries Brouwer (aeb@cwi.nl)
3 .\" and copyright (c) 2006 Justin Pryzby <justinpryzby@users.sf.net>
4 .\" and copyright (c) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
6 .\" This is free documentation; you can redistribute it and/or
7 .\" modify it under the terms of the GNU General Public License as
8 .\" published by the Free Software Foundation; either version 2 of
9 .\" the License, or (at your option) any later version.
11 .\" The GNU General Public License's references to "object code"
12 .\" and "executables" are to be interpreted as the output of any
13 .\" document formatting or typesetting system, including
14 .\" intermediate and printed output.
16 .\" This manual is distributed in the hope that it will be useful,
17 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
18 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 .\" GNU General Public License for more details.
21 .\" You should have received a copy of the GNU General Public
22 .\" License along with this manual; if not, write to the Free
23 .\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
26 .\" Modified Sun Jul 25 11:02:22 1993 by Rik Faith (faith@cs.unc.edu)
27 .\" 2006-05-24, Justin Pryzby <justinpryzby@users.sf.net>
28 .\" document FTW_ACTIONRETVAL; include .SH "RETURN VALUE";
29 .\" 2006-05-24, Justin Pryzby <justinpryzby@users.sf.net> and
30 .\" Michael Kerrisk <mtk.manpages@gmail.com>
31 .\" reorganized and rewrote much of the page
32 .\" 2006-05-24, Michael Kerrisk <mtk.manpages@gmail.com>
33 .\" Added an example program.
35 .\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
36 .\" Translated 1998-04-28, NAKANO Takeo <nakano@apm.seikei.ac.jp>
37 .\" Updated & Modified 1999-09-14, NAKANO Takeo <nakano@apm.seikei.ac.jp>
38 .\" Updated & Modified 2005-11-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
39 .\" Updated 2006-07-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
41 .\" WORD: file descriptor ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼
43 .TH FTW 3 2010-09-20 "Linux" "Linux Programmer's Manual"
46 .\"O ftw, nftw \- file tree walk
47 ftw, nftw \- ¥Õ¥¡¥¤¥ë¥Ä¥ê¡¼¤òÊ⤤ޤï¤ë
53 .BI "int ftw(const char *" dirpath ,
54 .BI " int (*" fn ") (const char *" fpath ", const struct stat *" sb ,
55 .BI " int " typeflag ),
56 .BI " int " nopenfd );
58 .B #define _XOPEN_SOURCE 500
61 .BI "int nftw(const char *" dirpath ,
62 .BI " int (*" fn ") (const char *" fpath ", const struct stat *" sb ,
63 .BI " int " typeflag ", struct FTW *" ftwbuf ),
64 .BI " int " nopenfd ", int " flags );
69 .\"O walks through the directory tree that is
70 .\"O located under the directory \fIdirpath\fP,
71 .\"O and calls \fIfn\fP() once for each entry in the tree.
72 .\"O By default, directories are handled before the files and
73 .\"O subdirectories they contain (preorder traversal).
77 ¤Ç»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼Á´ÂΤòÊ⤤ޤï¤ê¡¢
78 ¥Ä¥ê¡¼Ãæ¤Ç¥¨¥ó¥È¥ê¤¬¸«ÉÕ¤«¤ë¤´¤È¤Ë¡¢
81 ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¤½¤Î¤â¤Î¤¬¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤ä
82 ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤è¤ê¤âÀè¤Ë½èÍý¤µ¤ì¤ë (¹Ô¤¤¬¤±½çõº÷; preorder traversal)¡£
84 .\"O To avoid using up all of the calling process's file descriptors,
85 .\"O \fInopenfd\fP specifies the maximum number of directories that
87 .\"O will hold open simultaneously.
89 .\"O the search depth exceeds this,
91 .\"O will become slower because
92 .\"O directories have to be closed and reopened.
95 .\"O one file descriptor for each level in the directory tree.
96 ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬ÍøÍѲÄǽ¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò»È¤¤ÀڤäÆ
97 ¤·¤Þ¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¡¢
99 ¤¬Æ±»þ¤Ë¥ª¡¼¥×¥ó¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ÎºÇÂç¿ô¤ò
101 ¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
102 õº÷¤Î¿¼¤µ¤¬¤³¤ÎÃͤò±Û¤¨¤ë¤È¡¢
103 °ì¤Ä¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÊĤ¸¤Æ¤«¤é¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¥ª¡¼¥×¥ó¤·Ä¾¤¹¤³¤È
108 ¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Î³¬ÁØ 1 ¥ì¥Ù¥ë¤Ë¤Ä¤¡¢
109 ºÇÂç¤Ç¤â°ì¤Ä¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤·¤«»ÈÍѤ·¤Ê¤¤¡£
111 .\"O For each entry found in the tree,
114 .\"O \fIfn\fP() with three arguments:
119 ¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Ç¸«¤Ä¤«¤Ã¤¿¥¨¥ó¥È¥êËè¤Ë¡¢
129 .\"O is the pathname of the entry,
130 .\"O and is expressed either as a pathname relative to the calling process's
131 .\"O current working directory at the time of the call to
135 .\"O was expressed as a relative pathname,
136 .\"O or as an absolute pathname, if
138 .\"O was expressed as an absolute pathname.
140 ¤Ï¥¨¥ó¥È¥ê¤Î¥Ñ¥¹Ì¾¤Ç¤¢¤ë¡£
142 ¤¬ÁêÂХѥ¹Ì¾¤Ç»ØÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢
146 ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿»þÅÀ¤Î¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥«¥ì¥ó¥È¥ï¡¼¥¥ó¥°¥Ç¥£¥ì¥¯¥È¥ê
147 ¤«¤é¤ÎÁêÂХѥ¹Ì¾¤È¤Ê¤ë¡£
149 ¤¬ÀäÂХѥ¹Ì¾¤Ç»ØÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢
153 .\"O is a pointer to the
155 .\"O structure returned by a call to
166 ¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£
168 .\"O is an integer that has one of the following values:
170 ¤ÏÀ°¿ô¤Ç¡¢°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤Ç¤¢¤ë:
174 .\"O is a regular file.
176 ¤¬Ä̾ï¤Î¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë
186 .\"O is a directory which can't be read.
188 ¤¬Æɤ߹þ¤ß¤Ç¤¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë
195 .\"O which is not a symbolic link.
196 ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¤Ï¤Ê¤¤
204 .\"O is a symbolic link and
206 .\"O failed, POSIX.1-2001 states
207 .\"O that it is undefined whether \fBFTW_NS\fP or \fBFTW_SL\fP (see below)
211 ¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¡¢¤«¤Ä
219 ¤ËÅϤµ¤ì¤ë¤«¤Ï̤ÄêµÁ¤Ç¤¢¤ë¤È¡¢POSIX.1-2001 ¤Ë¤Ï½ñ¤«¤ì¤Æ¤¤¤ë¡£
221 .\"O To stop the tree walk, \fIfn\fP() returns a nonzero value; this
222 .\"O value will become the return value of
224 .\"O As long as \fIfn\fP() returns 0,
226 .\"O will continue either until it has traversed the entire tree,
227 .\"O in which case it will return zero,
228 .\"O or until it encounters an error (such as a
230 .\"O failure), in which case it will return \-1.
231 ¥Ä¥ê¡¼¤Îõº÷¤ò»ß¤á¤¿¤¤¾ì¹ç¤Ï¡¢
233 ¤¬ 0 °Ê³°¤ÎÃͤòÊÖ¤»¤ÐÎɤ¤
236 ¼«¿È¤ÎÌá¤êÃͤȤʤë)¡£
239 ¤Ï¥Ä¥ê¡¼Á´ÂΤÎõº÷¤ò³¤±¡¢¤¹¤Ù¤Æ¤Î¥Ä¥ê¡¼¤òõº÷¤·½ª¤¨¤¿¤È¤³¤í¤Ç
242 ¤Î¼ºÇԤʤɤÎ) ¥¨¥é¡¼¤¬µ¯¤³¤ë¤È \-1 ¤òÊÖ¤¹¡£
246 .\"O uses dynamic data structures, the only safe way to
247 .\"O exit out of a tree walk is to return a nonzero value from \fIfn\fP().
248 .\"O To allow a signal to terminate the walk without causing a memory leak,
249 .\"O have the handler set a global flag that is checked by \fIfn\fP().
252 .\"O unless the program is going to terminate.
254 ¤ÏưŪ¤Ê¥Ç¡¼¥¿¹½Â¤¤òÍѤ¤¤ë¤Î¤Ç¡¢¥Ä¥ê¡¼Ãµº÷¤ò°ÂÁ´¤ËÃæÃǤ¹¤ëÍ£°ì¤ÎÊýË¡¤Ï
257 ¤ÎÊÖ¤êÃͤȤ¹¤ë¤³¤È¤Ç¤¢¤ë¡£³ä¤ê¹þ¤ß¤ò°·¤¦¤Ë¤Ï¡¢
258 Î㤨¤ÐȯÀ¸¤·¤¿³ä¤ê¹þ¤ß¤ò¥Þ¡¼¥¯¤·¤Æ¤ª¤¤¤Æ¡¢ 0 °Ê³°¤ÎÃͤòÊÖ¤¹¤è¤¦¤Ë¤¹¤ë
259 ¥·¥°¥Ê¥ë¤Ë¤è¤ê¥á¥â¥ê¥ê¡¼¥¯¤òµ¯¤³¤µ¤º¤Ëõº÷¤ò½ªÎ»¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢
262 ¤¬¥Á¥§¥Ã¥¯¤¹¤ë¥°¥í¡¼¥Ð¥ë¤Ê¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¤è¤¦¤Ë¤¹¤ì¤Ð¤è¤¤¡£
263 ¥×¥í¥°¥é¥à¤ò½ªÎ»¤µ¤»¤ë¾ì¹ç°Ê³°¤Ï¡¢
267 .\"O The function \fBnftw\fP() is the same as
269 .\"O except that it has one additional argument, \fIflags\fP,
270 .\"O and calls \fIfn\fP() with one more argument, \fIftwbuf\fP.
281 ¤¬Äɲ䵤ì¤ëÅÀ¤¬°Û¤Ê¤ë¡£
283 .\"O This \fIflags\fP argument is formed by ORing zero or more of the
284 .\"O following flags:
287 °ú¤¿ô¤Ï²¼µ¤Î¥Õ¥é¥°¤Î 0 ¸Ä°Ê¾å¤ÎÏÀÍýϤò¼è¤Ã¤¿¤â¤Î¤Ç¤¢¤ë:
289 .\"O .BR FTW_ACTIONRETVAL " (since glibc 2.3.3)"
290 .BR FTW_ACTIONRETVAL " (glibc 2.3.3 °Ê¹ß)"
291 .\"O If this glibc-specific flag is set, then
293 .\"O handles the return value from
297 .\"O should return one of the following values:
298 ¤³¤Î¥Õ¥é¥°¤Ï glibc ¸ÇͤǤ¢¤ë¡£
299 ¤³¤Î¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¤È¡¢
303 ¤ÎÊÖ¤êÃͤΰ·¤¤¤¬ÊѤï¤ë¡£
305 ¤Ï°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤òÊÖ¤¹É¬Íפ¬¤¢¤ë¡£
311 .\"O to continue normally.
313 ¤ÏÄ̾ïÄ̤ê½èÍý¤ò³¤±¤ë¡£
316 .\"O If \fIfn\fP() returns this value, then
317 .\"O siblings of the current entry will be skipped,
318 .\"O and processing continues in the parent.
320 ¤¬¤³¤ÎÃͤòÊÖ¤·¤¿¾ì¹ç¡¢½èÍýÃæ¤Î¥¨¥ó¥È¥ê¤Î·»Äï (Ʊ¤¸³¬ÁؤΥ¨¥ó¥È¥ê)
321 ¤Î½èÍý¤Ï¥¹¥¥Ã¥×¤µ¤ì¡¢¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤Ç³¤¤Î½èÍý¤¬¹Ô¤ï¤ì¤ë¡£
322 .\" If \fBFTW_DEPTH\fP
323 .\" is set, the entry's parent directory is processed next (with
324 .\" \fIflag\fP set to \fBFTW_DP\fP).
327 .\"O If \fIfn\fP() is called with an entry that is a directory
328 .\"O (\fItypeflag\fP is \fBFTW_D\fP), this return
329 .\"O value will prevent objects within that directory from being passed as
330 .\"O arguments to \fIfn\fP().
332 .\"O continues processing with the next sibling of the directory.
334 ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¥¨¥ó¥È¥ê¤¬¥Ç¥£¥ì¥¯¥È¥ê
338 ¤Î¾ì¹ç¤Ë¡¢¤³¤ÎÃͤòÊÖ¤¹¤È
340 ¤Î°ú¤¿ô¤È¤·¤ÆÅϤµ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¥¨¥ó¥È¥ê¤Î½èÍý¤¬¹Ô¤ï¤ì¤Ê¤¯¤Ê¤ë¡£
342 ¤Ï½èÍýÃæ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î·»Äï (Ʊ¤¸³¬ÁؤΥ¨¥ó¥È¥ê) ¤«¤é½èÍý¤ò³¤±¤ë¡£
347 .\"O to return immediately with the return value
354 .\"O Other return values could be associated with new actions in the future;
355 .\"O \fIfn\fP() should not return values other than those listed above.
356 ¾¤ÎÊÖ¤êÃͤϾÍè¿·¤·¤¤Æ°ºî¤ËÂбþÉÕ¤±¤é¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£
358 ¤Ï¾åµ¤Î¥ê¥¹¥È¤Ë¤¢¤ëÃͰʳ°¤òÊÖ¤µ¤Ê¤¤¤è¤¦¤Ë¤¹¤Ù¤¤Ç¤¢¤ë¡£
360 .\"O The feature test macro
363 .\"O (before including
367 .\"O obtain the definition of \fBFTW_ACTIONRETVAL\fP from \fI<ftw.h>\fP.
371 ¤ÎÄêµÁ¤¬Í¸ú¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢
372 (¡Ö¤É¤Î¡×¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤è¤ê¤âÁ°¤Ë)
375 ¤òÄêµÁ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
381 .\"O to each directory before handling its contents.
382 .\"O This is useful if the program needs to perform some action
383 .\"O in the directory in which \fIfpath\fP resides.
384 ¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢¥Ç¥£¥ì¥¯¥È¥ê¤ÎÆâÍƤò½èÍý¤¹¤ëÁ°¤Ë
389 ¤¬Â°¤¹¥Ç¥£¥ì¥¯¥È¥ê¤Ç²¿¤é¤«¤ÎÆ°ºî¤ò¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë
393 .\"O If set, do a post-order traversal, that is, call \fIfn\fP() for
394 .\"O the directory itself \fIafter\fP handling the contents of the directory
395 .\"O and its subdirectories.
396 .\"O (By default, each directory is handled \fIbefore\fP its contents.)
397 ¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢µ¢¤ê¤¬¤±½çõº÷ (post-order traversal) ¤ò¹Ô¤¦¡£
398 ¤Ä¤Þ¤ê¡¢¥Ç¥£¥ì¥¯¥È¥ê¤½¤Î¤â¤Î¤ò°ú¤¿ô¤È¤·¤¿
400 ¸Æ½Ð¤·¤Ï¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤ë¥Õ¥¡¥¤¥ë¤È¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ë
401 ÂФ¹¤ë½èÍý¤Î¡Ö¸å¤Ç¡×¹Ô¤ï¤ì¤ë
402 (¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¼«¿È¤Î½èÍý¤Ï¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¥¨¥ó¥È¥ê
403 ¤è¤ê¡ÖÁ°¤Ë¡×¹Ô¤Ê¤ï¤ì¤ë)¡£
406 .\"O If set, stay within the same file system
407 .\"O (i.e., do not cross mount points).
408 ¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢Æ±¤¸¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÃæ¤À¤±¤òõº÷ÂоݤȤ¹¤ë
409 (¤Ä¤Þ¤ê¡¢¥Þ¥¦¥ó¥È¥Ý¥¤¥ó¥È¤ò¤Þ¤¿¤°¤³¤È¤Ï¤Ê¤¤)¡£
412 .\"O If set, do not follow symbolic links.
413 .\"O (This is what you want.)
414 .\"O If not set, symbolic links are followed, but no file is reported twice.
415 ¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé¤é¤Ê¤¤ (¤ª¤½¤é¤¯¤³¤Á¤é¤¬
416 Ä̾ï˾¤Þ¤·¤¤Æ°ºî¤À¤í¤¦)¡£¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ò
417 é¤ë¤¬¡¢Æ±¤¸¥Õ¥¡¥¤¥ë¤¬Æó²óÊó¹ð¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£
419 .\"O If \fBFTW_PHYS\fP is not set, but \fBFTW_DEPTH\fP is set,
420 .\"O then the function
422 .\"O is never called for a directory that would be a descendant of itself.
426 ¤¬¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢¼«Ê¬¼«¿È¤ËÂФ¹¤ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òÇÛ²¼¤Ë»ý¤Ä
429 ¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤³¤È¤Ï·è¤·¤Æ¤Ê¤¤¡£
431 .\"O For each entry in the directory tree,
435 .\"O with four arguments.
442 .\"O may receive any of the same values as with
444 .\"O or any of the following values:
445 ¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Î¥¨¥ó¥È¥êËè¤Ë¡¢
459 ¤Ç¼è¤êÆÀ¤ëÃͤΤ¤¤º¤ì¤«¡¢¤Þ¤¿¤Ï°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«¤¬ÅϤµ¤ì¤ë:
463 .\"O is a directory, and \fBFTW_DEPTH\fP was specified in \fIflags\fP.
464 .\"O All of the files
465 .\"O and subdirectories within \fIfpath\fP have been processed.
467 ¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¡¢¤«¤Ä
473 ÇÛ²¼¤Î¥Õ¥¡¥¤¥ë¤È¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ÏÁ´¤Æ½èÍý¤¬½ª¤ï¤Ã¤Æ¤¤¤ë¡£
477 .\"O is a symbolic link, and \fBFTW_PHYS\fP was set in \fIflags\fP.
479 ¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¡¢¤«¤Ä \fBFTW_PHYS\fP ¤¬ \fIflags\fP ¤Ë
481 .\" To obtain the definition of this constant from
485 .\" must be defined, or
486 .\" .BR _XOPEN_SOURCE
487 .\" must be defined with a value of 500 or more.
491 .\"O is a symbolic link pointing to a nonexistent file.
492 .\"O (This occurs only if \fBFTW_PHYS\fP is not set.)
494 ¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¡¢Â¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë¤ò»Ø¤·¤Æ¤¤¤ë
495 (¤³¤ì¤¬¥»¥Ã¥È¤µ¤ì¤ë¤Î¤Ï
497 ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤À¤±¤Ç¤¢¤ë)¡£
499 .\"O The fourth argument that
501 .\"O supplies when calling
503 .\"O is a structure of type \fIFTW\fP:
507 ¤ò¸Æ¤Ó½Ð¤¹ºÝ¤ËÅϤ¹ 4¤Ä¤á¤Î°ú¤¿ô¤Ï
521 .\"O is the offset of the filename (i.e., basename component)
522 .\"O in the pathname given in
527 .\"O in the directory tree, relative to the root of the tree
529 .\"O which has depth 0).
531 ¤Ï¡¢¥Õ¥¡¥¤¥ë̾ (basename Í×ÁÇ) ¤Î¡¢
533 ¤ÇÅϤµ¤ì¤ë¥Ñ¥¹Ì¾¤ÎÃæ¤Ç¤Î¥ª¥Õ¥»¥Ã¥È¤Ç¤¢¤ë¡£
535 ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Ç¤Î
537 ¤Î¿¼¤µ¤ò¼¨¤¹¡£¿¼¤µ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Î¥È¥Ã¥× (root) ¤«¤é¤Î
541 .\"O .SH "RETURN VALUE"
543 .\"O These functions return 0 on success, and \-1 if an error occurs.
544 ¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È 0 ¤ò¡¢¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È \-1 ¤òÊÖ¤¹¡£
546 .\"O If \fIfn\fP() returns nonzero,
547 .\"O then the tree walk is terminated and the value returned by \fIfn\fP()
548 .\"O is returned as the result of \fBftw\fP() or
551 ¤¬ 0 °Ê³°¤òÊÖ¤·¤¿¾ì¹ç¡¢¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Îõº÷¤ò½ªÎ»¤·¡¢
561 .\"O is called with the \fBFTW_ACTIONRETVAL\fP flag,
562 .\"O then the only nonzero value that should be used by \fIfn\fP()
563 .\"O to terminate the tree walk is \fBFTW_STOP\fP,
564 .\"O and that value is returned as the result of
569 ¥Õ¥é¥°ÉÕ¤¤Ç¸Æ¤Ð¤ì¤¿¾ì¹ç¡¢¥Ä¥ê¡¼¤Îõº÷¤ò½ªÎ»¤µ¤»¤ë¤¿¤á¤Ë
571 ¤¬»ÈÍѤǤ¤ë¡¢Èó 0 ¤ÎÃͤÏ
576 ¤ÎÊÖ¤êÃͤȤ·¤ÆÊÖ¤µ¤ì¤ë¡£
577 .\"O .SH "CONFORMING TO"
579 POSIX.1-2001, SVr4, SUSv1.
580 .\"O POSIX.1-2008 marks
585 ¤òÇÑ»ßͽÄê¤È¤·¤Æ¤¤¤ë¡£
588 .\"O POSIX.1-2001 note that the results are unspecified if
590 .\"O does not preserve the current working directory.
591 POSIX.1-2001 ¤ÎÃíµ¤Ë¤è¤ë¤È¡¢
593 ¤¬¥«¥ì¥ó¥È¥ï¡¼¥¥ó¥°¥Ç¥£¥ì¥¯¥È¥ê¤òÊÝ»ý¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤Î
594 ·ë²Ì¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¤µ¤ì¤Æ¤¤¤ë¡£
598 .\"O and the use of \fBFTW_SL\fP with
600 .\"O were introduced in SUSv1.
606 ¤Ï¡¢SUSv1 ¤ÇƳÆþ¤µ¤ì¤¿¡£
610 .\"O will never use \fBFTW_SL\fP, on other systems \fBFTW_SL\fP occurs only
611 .\"O for symbolic links that do not point to an existing file,
612 .\"O and again on other systems
614 .\"O will use \fBFTW_SL\fP for each symbolic link.
615 .\"O For predictable control, use
620 ¤ò°ìÀڻȤï¤Ê¤¤¥·¥¹¥Æ¥à¤ä¡¢
621 ¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë¤ò»Ø¤·¤Æ¤¤¤ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¾ì¹ç¤Ë¤Î¤ß
625 ¤¬Á´¤Æ¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ËÂФ·¤Æ
627 ¤ò»È¤¦¥·¥¹¥Æ¥à¤â¤¢¤ë¡£
628 ͽ¬²Äǽ¤ÊÆ°ºî¤ò¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢
632 .\"O Under Linux, libc4 and libc5 and glibc 2.0.6 will
633 .\"O use \fBFTW_F\fP for all objects (files, symbolic links, FIFOs, etc.)
634 .\"O that can be stat'ed but are not a directory.
635 Linux ¤Ç¤Ï¡¢ libc4, libc5, glibc 2.0.6 ¤Ï
636 ¡Östat ¤Ç¤¤ë¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¡×
637 (¥Õ¥¡¥¤¥ë, ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯, fifo Åù)
644 .\"O is available since glibc 2.1.
646 ´Ø¿ô¤Ï glibc 2.1 °Ê¹ß¤ÇÍøÍѤǤ¤ë¡£
648 .\"O \fBFTW_ACTIONRETVAL\fP is glibc-specific.
650 ¤Ï glibc ¸ÇͤǤ¢¤ë¡£
653 .\"O The following program traverses the directory tree under the path named
654 .\"O in its first command-line argument, or under the current directory
655 .\"O if no argument is supplied.
656 .\"O It displays various information about each file.
657 .\"O The second command-line argument can be used to specify characters that
658 .\"O control the value assigned to the \fIflags\fP
659 .\"O argument when calling
661 °Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢°ì¤ÄÌܤΥ³¥Þ¥ó¥É¥é¥¤¥ó°ú¤¿ô¤ò̾Á°¤Ë»ý¤Ä¥Ñ¥¹°Ê²¼¤Î
662 ¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤òõº÷¤¹¤ë¡£°ú¤¿ô¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢
663 ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤òõº÷¤¹¤ë¡£
664 ³Æ¡¹¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤ÆÍÍ¡¹¤Î¾ðÊó¤¬É½¼¨¤µ¤ì¤ë¡£
665 ÆóÈÖÌܤΥ³¥Þ¥ó¥É¥é¥¤¥ó°ú¤¿ô¤Ëʸ»ú¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢
669 °ú¤¿ô¤ËÅϤ¹ÃͤòÀ©¸æ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
672 #define _XOPEN_SOURCE 500
680 display_info(const char *fpath, const struct stat *sb,
681 int tflag, struct FTW *ftwbuf)
683 printf("%\-3s %2d %7jd %\-40s %d %s\\n",
684 (tflag == FTW_D) ? "d" : (tflag == FTW_DNR) ? "dnr" :
685 (tflag == FTW_DP) ? "dp" : (tflag == FTW_F) ? "f" :
686 (tflag == FTW_NS) ? "ns" : (tflag == FTW_SL) ? "sl" :
687 (tflag == FTW_SLN) ? "sln" : "???",
688 ftwbuf\->level, (intmax_t) sb\->st_size,
689 fpath, ftwbuf\->base, fpath + ftwbuf\->base);
690 return 0; /* To tell nftw() to continue */
694 main(int argc, char *argv[])
698 if (argc > 2 && strchr(argv[2], \(aqd\(aq) != NULL)
700 if (argc > 2 && strchr(argv[2], \(aqp\(aq) != NULL)
703 if (nftw((argc < 2) ? "." : argv[1], display_info, 20, flags)
716 .BR feature_test_macros (7)