Rechercher une page de manuel
ftw
Langue: ja
Version: 2006-05-24 (openSuse - 09/10/07)
Section: 3 (Bibliothèques de fonctions)
̾Á°
ftw, nftw - ¥Õ¥¡¥¤¥ë¥Ä¥ê¡¼¤òÊ⤤ޤï¤ë½ñ¼°
#include <ftw.h> int ftw(const char *dirpath, int (*fn) (const char *fpath, const struct stat *sb, int typeflag), int nopenfd); #define _XOPEN_SOURCE 500 #include <ftw.h> int nftw(const char *dirpath, int (*fn) (const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf), int nopenfd, int flags);
ÀâÌÀ
ftw() ¤Ï¡¢ dirpath ¤Ç»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼Á´ÂΤòÊ⤤ޤï¤ê¡¢ ¥Ä¥ê¡¼Ãæ¤Ç¥¨¥ó¥È¥ê¤¬¸«ÉÕ¤«¤ë¤´¤È¤Ë¡¢ fn() ¤ò¸Æ¤Ó½Ð¤¹¡£ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¤½¤Î¤â¤Î¤¬¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤ä ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤è¤ê¤âÀè¤Ë½èÍý¤µ¤ì¤ë (¹Ô¤¤¬¤±½çõº÷; pre-order traversal)¡£¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬ÍøÍѲÄǽ¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò»È¤¤ÀÚ¤Ã¤Æ ¤·¤Þ¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¡¢ ftw() ¤¬Æ±»þ¤Ë¥ª¡¼¥×¥ó¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ÎºÇÂç¿ô¤ò nopenfd ¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£ õº÷¤Î¿¼¤µ¤¬¤³¤ÎÃͤò±Û¤¨¤ë¤È¡¢ °ì¤Ä¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÊĤ¸¤Æ¤«¤é¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¥ª¡¼¥×¥ó¤·Ä¾¤¹¤³¤È ¤Ë¤Ê¤ë¤Î¤Ç¡¢ ftw() ¤ÎÆ°ºî¤ÏÃÙ¤¯¤Ê¤ë¡£ ftw() ¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Î³¬ÁØ 1 ¥ì¥Ù¥ë¤Ë¤Ä¤¡¢ ºÇÂç¤Ç¤â°ì¤Ä¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤·¤«»ÈÍѤ·¤Ê¤¤¡£
¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Ç¸«¤Ä¤«¤Ã¤¿¥¨¥ó¥È¥êËè¤Ë¡¢ ftw() ¤Ï fpath, sb, typeflag ¤Î 3¤Ä¤ò°ú¤¿ô¤È¤·¤Æ fn() ¤ò¸Æ¤Ó½Ð¤¹¡£ fpath ¤Ï¥¨¥ó¥È¥ê¤Î dirpath ¤«¤é¤ÎÁêÂХѥ¹Ì¾¤Ç¤¢¤ë¡£ sb ¤Ï fpath ¤ËÂФ¹¤ë stat(2) ¤Î¸Æ¤Ó½Ð¤·¤ÇÊÖ¤µ¤ì¤ë stat ¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£ typeflag ¤ÏÀ°¿ô¤Ç¡¢°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤Ç¤¢¤ë:
- FTW_F
- fpath ¤¬Ä̾ï¤Î¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë
- FTW_D
- fpath ¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë
- FTW_DNR
- fpath ¤¬Æɤ߹þ¤ß¤Ç¤¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë
- FTW_NS
- ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¤Ï¤Ê¤¤ fpath ¤ËÂФ¹¤ë stat(2) ¸Æ¤Ó½Ð¤·¤¬¼ºÇÔ¤·¤¿¡£
fpath ¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¡¢¤«¤Ä stat(2) ¤¬¼ºÇÔ¤·¤¿¾ì¹ç¡¢ FTW_NS ¤È FTW_SL (¸å½Ò) ¤Î¤É¤Á¤é¤¬ typeflag ¤ËÅϤµ¤ì¤ë¤«¤Ï̤ÄêµÁ¤Ç¤¢¤ë¤È¡¢POSIX.1-2001 ¤Ë¤Ï½ñ¤«¤ì¤Æ¤¤¤ë¡£
¥Ä¥ê¡¼¤Îõº÷¤ò»ß¤á¤¿¤¤¾ì¹ç¤Ï¡¢ fn() ¤¬ 0 °Ê³°¤ÎÃͤòÊÖ¤»¤ÐÎɤ¤ (¤³¤ÎÃÍ¤Ï ftw() ¼«¿È¤ÎÌá¤êÃͤȤʤë)¡£ ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï ftw() ¤Ï¥Ä¥ê¡¼Á´ÂΤÎõº÷¤ò³¤±¡¢¤¹¤Ù¤Æ¤Î¥Ä¥ê¡¼¤òõº÷¤·½ª¤¨¤¿¤È¤³¤í¤Ç 0 ¤òÊÖ¤¹¡£Ãµº÷Ãæ¤Ë (malloc(3) ¤Î¼ºÇԤʤɤÎ) ¥¨¥é¡¼¤¬µ¯¤³¤ë¤È -1 ¤òÊÖ¤¹¡£
ftw() ¤ÏưŪ¤Ê¥Ç¡¼¥¿¹½Â¤¤òÍѤ¤¤ë¤Î¤Ç¡¢¥Ä¥ê¡¼Ãµº÷¤ò°ÂÁ´¤ËÃæÃǤ¹¤ëÍ£°ì¤ÎÊýË¡¤Ï 0 °Ê³°¤ÎÃͤò fn() ¤ÎÊÖ¤êÃͤȤ¹¤ë¤³¤È¤Ç¤¢¤ë¡£³ä¤ê¹þ¤ß¤ò°·¤¦¤Ë¤Ï¡¢ Î㤨¤ÐȯÀ¸¤·¤¿³ä¤ê¹þ¤ß¤ò¥Þ¡¼¥¯¤·¤Æ¤ª¤¤¤Æ¡¢ 0 °Ê³°¤ÎÃͤòÊÖ¤¹¤è¤¦¤Ë¤¹¤ë ¥·¥°¥Ê¥ë¤Ë¤è¤ê¥á¥â¥ê¥ê¡¼¥¯¤òµ¯¤³¤µ¤º¤Ëõº÷¤ò½ªÎ»¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢ ¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ç fn() ¤¬¥Á¥§¥Ã¥¯¤¹¤ë¥°¥í¡¼¥Ð¥ë¤Ê¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¤è¤¦¤Ë¤¹¤ì¤Ð¤è¤¤¡£ ¥×¥í¥°¥é¥à¤ò½ªÎ»¤µ¤»¤ë¾ì¹ç°Ê³°¤Ï¡¢ longjmp(3) ¤ò»ÈÍѤ·¤Ê¤¤¤³¤È¡£
nftw()
´Ø¿ô nftw() ¤Ï ftw() ¤ÈƱ¤¸¤À¤¬¡¢°ú¤¿ô flags ¤¬Äɲ䵤ì¤ëÅÀ¤È¡¢ fn() ¤Î°ú¤¿ô¤Ë ftwbuf ¤¬Äɲ䵤ì¤ëÅÀ¤¬°Û¤Ê¤ë¡£¤³¤Î flags °ú¤¿ô¤Ï²¼µ¤Î¥Õ¥é¥°¤Î 0 ¸Ä°Ê¾å¤ÎÏÀÍýϤò¼è¤Ã¤¿¤â¤Î¤Ç¤¢¤ë:
- FTW_ACTIONRETVAL (glibc 2.3.3 °Ê¹ß)
- ¤³¤Î¥Õ¥é¥°¤Ï glibc ¸ÇͤǤ¢¤ë¡£ ¤³¤Î¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¤È¡¢ nftw() ¤Î fn() ¤ÎÊÖ¤êÃͤΰ·¤¤¤¬ÊѤï¤ë¡£ fn() ¤Ï°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤òÊÖ¤¹É¬Íפ¬¤¢¤ë¡£
-
- FTW_CONTINUE
- nftw() ¤ÏÄ̾ïÄ̤ê½èÍý¤ò³¤±¤ë¡£
- FTW_SKIP_SIBLINGS
- fn() ¤¬¤³¤ÎÃͤòÊÖ¤·¤¿¾ì¹ç¡¢½èÍýÃæ¤Î¥¨¥ó¥È¥ê¤Î·»Äï (Ʊ¤¸³¬ÁؤΥ¨¥ó¥È¥ê) ¤Î½èÍý¤Ï¥¹¥¥Ã¥×¤µ¤ì¡¢¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤Ç³¤¤Î½èÍý¤¬¹Ô¤ï¤ì¤ë¡£
- FTW_SKIP_SUBTREE
- fn() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¥¨¥ó¥È¥ê¤¬¥Ç¥£¥ì¥¯¥È¥ê (typeflag ¤¬ FTW_D) ¤Î¾ì¹ç¤Ë¡¢¤³¤ÎÃͤòÊÖ¤¹¤È fn() ¤Î°ú¤¿ô¤È¤·¤ÆÅϤµ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¥¨¥ó¥È¥ê¤Î½èÍý¤¬¹Ô¤ï¤ì¤Ê¤¯¤Ê¤ë¡£ nftw() ¤Ï½èÍýÃæ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î·»Äï (Ʊ¤¸³¬ÁؤΥ¨¥ó¥È¥ê) ¤«¤é½èÍý¤ò³¤±¤ë¡£
- FTW_STOP
- nftw () ¤Ï¡¢ÊÖ¤êÃÍ FTW_STOP ¤Ç¤¹¤°¤ËÉüµ¢¤¹¤ë¡£
¾¤ÎÊÖ¤êÃͤϾÍè¿·¤·¤¤Æ°ºî¤ËÂбþÉÕ¤±¤é¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£ fn() ¤Ï¾åµ¤Î¥ê¥¹¥È¤Ë¤¢¤ëÃͰʳ°¤òÊÖ¤µ¤Ê¤¤¤è¤¦¤Ë¤¹¤Ù¤¤Ç¤¢¤ë¡£
<ftw.h> ¤Ç FTW_ACTIONRETVAL ¤¬ÄêµÁ¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢ µ¡Ç½¸¡ºº¥Þ¥¯¥í _GNU_SOURCE ¤òÄêµÁ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-
- FTW_CHDIR
- ¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢¥Ç¥£¥ì¥¯¥È¥ê¤ÎÆâÍƤò½èÍý¤¹¤ëÁ°¤Ë ¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë chdir(2) ¤¹¤ë¡£¤³¤Î¥Õ¥é¥°¤Ï¡¢ fpath ¤¬Â°¤¹¥Ç¥£¥ì¥¯¥È¥ê¤Ç²¿¤é¤«¤ÎÆ°ºî¤ò¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë ÊØÍø¤Ç¤¢¤ë¡£
- FTW_DEPTH
- ¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢µ¢¤ê¤¬¤±½çõº÷ (post-order traversal) ¤ò¹Ô¤¦¡£ ¤Ä¤Þ¤ê¡¢¥Ç¥£¥ì¥¯¥È¥ê¤½¤Î¤â¤Î¤ò°ú¤¿ô¤È¤·¤¿ fn() ¸Æ½Ð¤·¤Ï¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤ë¥Õ¥¡¥¤¥ë¤È¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ë ÂФ¹¤ë½èÍý¤Î¡Ö¸å¤Ç¡×¹Ô¤ï¤ì¤ë (¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê¼«¿È¤Î½èÍý¤Ï¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¥¨¥ó¥È¥ê ¤è¤ê¡ÖÁ°¤Ë¡×¹Ô¤Ê¤ï¤ì¤ë)¡£
- FTW_MOUNT
- ¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢Æ±¤¸¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÃæ¤À¤±¤òõº÷ÂоݤȤ¹¤ë (¤Ä¤Þ¤ê¡¢¥Þ¥¦¥ó¥È¥Ý¥¤¥ó¥È¤ò¤Þ¤¿¤°¤³¤È¤Ï¤Ê¤¤)¡£
- FTW_PHYS
- ¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé¤é¤Ê¤¤ (¤ª¤½¤é¤¯¤³¤Á¤é¤¬ Ä̾ï˾¤Þ¤·¤¤Æ°ºî¤À¤í¤¦)¡£¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ò é¤ë¤¬¡¢Æ±¤¸¥Õ¥¡¥¤¥ë¤¬Æó²óÊó¹ð¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£
FTW_PHYS ¤¬¥»¥Ã¥È¤µ¤ì¤º¤Ë FTW_DEPTH ¤¬¥»¥Ã¥È¤µ¤ì¤ë¤È¡¢¼«Ê¬¼«¿È¤ËÂФ¹¤ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òÇÛ²¼¤Ë»ý¤Ä ¥Ç¥£¥ì¥¯¥È¥ê¤ËÂФ·¤Æ fn() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤³¤È¤Ï·è¤·¤Æ¤Ê¤¤¡£
¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Î¥¨¥ó¥È¥êËè¤Ë¡¢ nftw() ¤Ï 4¤Ä¤Î°ú¤¿ô¤Ç fn() ¤ò¸Æ¤Ó½Ð¤¹¡£ fpath ¤È sb ¤Ï ftw() ¤ÈƱ¤¸¤Ç¤¢¤ë¡£ typeflag ¤Ë¤Ï¡¢ ftw() ¤Ç¼è¤êÆÀ¤ëÃͤΤ¤¤º¤ì¤«¡¢¤Þ¤¿¤Ï°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«¤¬ÅϤµ¤ì¤ë:
- FTW_DP
- fpath ¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¡¢¤«¤Ä flags ¤Ç FTW_DEPTH ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¡£ fpath ÇÛ²¼¤Î¥Õ¥¡¥¤¥ë¤È¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ÏÁ´¤Æ½èÍý¤¬½ª¤ï¤Ã¤Æ¤¤¤ë¡£
- FTW_SL
- fpath ¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¡¢¤«¤Ä FTW_PHYS ¤¬ flags ¤Ë ¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤¿¡£
- FTW_SLN
- fpath ¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¡¢Â¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë¤ò»Ø¤·¤Æ¤¤¤ë (¤³¤ì¤¬¥»¥Ã¥È¤µ¤ì¤ë¤Î¤Ï FTW_PHYS ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤À¤±¤Ç¤¢¤ë)¡£
nftw() ¤¬ fn() ¤ò¸Æ¤Ó½Ð¤¹ºÝ¤ËÅϤ¹ 4¤Ä¤á¤Î°ú¤¿ô¤Ï FTW ·¿¤Î¹½Â¤ÂΤǤ¢¤ë¡£
struct FTW { int base; int level; };base ¤Ï¡¢¥Õ¥¡¥¤¥ë̾ (basename Í×ÁÇ) ¤Î¡¢ fpath ¤ÇÅϤµ¤ì¤ë¥Ñ¥¹Ì¾¤ÎÃæ¤Ç¤Î¥ª¥Õ¥»¥Ã¥È¤Ç¤¢¤ë¡£ level ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Ç¤Î fpath ¤Î¿¼¤µ¤ò¼¨¤¹¡£¿¼¤µ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Î¥È¥Ã¥× (root) ¤«¤é¤Î ÁêÂÐÃͤǤ¢¤ë (dirpath ¤Ï¿¼¤µ 0 ¤Ç¤¢¤ë)¡£
ÊÖ¤êÃÍ
¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È 0 ¤ò¡¢¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È -1 ¤òÊÖ¤¹¡£fn() ¤¬ 0 °Ê³°¤òÊÖ¤·¤¿¾ì¹ç¡¢¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤Îõº÷¤ò½ªÎ»¤·¡¢ fn() ¤¬ÊÖ¤·¤¿Ãͤò ftw() ¤ä nftw() ¤Î·ë²Ì¤È¤·¤ÆÊÖ¤¹¡£
nftw() ¤¬ FTW_ACTIONRETVAL ¥Õ¥é¥°ÉÕ¤¤Ç¸Æ¤Ð¤ì¤¿¾ì¹ç¡¢¥Ä¥ê¡¼¤Îõº÷¤ò½ªÎ»¤µ¤»¤ë¤¿¤á¤Ë fn() ¤¬»ÈÍѤǤ¤ë¡¢Èó 0 ¤ÎÃÍ¤Ï FTW_STOP ¤À¤±¤Ç¤¢¤ê¡¢ ¤³¤ÎÃÍ¤Ï nftw() ¤ÎÊÖ¤êÃͤȤ·¤ÆÊÖ¤µ¤ì¤ë¡£
½àµò
POSIX.1-2001, SVr4, SUSv1.Ãí°Õ
nftw() ´Ø¿ô¤È¡¢ ftw() ¤Ë¤ª¤±¤ë FTW_SL ¤Ï¡¢SUSv1 ¤ÇƳÆþ¤µ¤ì¤¿¡£ftw() ¤Ç FTW_SL ¤ò°ìÀڻȤï¤Ê¤¤¥·¥¹¥Æ¥à¤ä¡¢ ¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë¤ò»Ø¤·¤Æ¤¤¤ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¾ì¹ç¤Ë¤Î¤ß FTW_SL ¤ò»È¤¦¥·¥¹¥Æ¥à¡¢¤Þ¤¿ ftw() ¤¬Á´¤Æ¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ËÂФ·¤Æ FTW_SL ¤ò»È¤¦¥·¥¹¥Æ¥à¤â¤¢¤ë¡£ ͽ¬²Äǽ¤ÊÆ°ºî¤ò¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢ nftw() ¤ò»È¤¦¤³¤È¡£
Linux ¤Ç¤Ï¡¢ libc4, libc5, glibc 2.0.6 ¤Ï ¡Östat ¤Ç¤¤ë¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¡× (¥Õ¥¡¥¤¥ë, ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯, fifo Åù) ¤ËÂФ·¤Æ¤Ï¤¹¤Ù¤Æ FTW_F ¤ò»È¤¦¡£
nftw() ´Ø¿ô¤Ï glibc 2.1 °Ê¹ß¤ÇÍøÍѤǤ¤ë¡£
FTW_ACTIONRETVAL ¤Ï glibc ¸ÇͤǤ¢¤ë¡£
Îã
°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢°ì¤ÄÌܤΥ³¥Þ¥ó¥É¥é¥¤¥ó°ú¤¿ô¤ò̾Á°¤Ë»ý¤Ä¥Ñ¥¹°Ê²¼¤Î ¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼¤òõº÷¤¹¤ë¡£°ú¤¿ô¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤òõº÷¤¹¤ë¡£ ³Æ¡¹¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤ÆÍÍ¡¹¤Î¾ðÊó¤¬É½¼¨¤µ¤ì¤ë¡£ ÆóÈÖÌܤΥ³¥Þ¥ó¥É¥é¥¤¥ó°ú¤¿ô¤Ëʸ»ú¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢ nftw() ¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë flags °ú¤¿ô¤ËÅϤ¹ÃͤòÀ©¸æ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£#define _XOPEN_SOURCE 500 #include <ftw.h> #include <stdio.h> #include <stdlib.h> #include <string.h> static int display_info(const char *fpath, const struct stat *sb, int tflag, struct FTW *ftwbuf) { printf("%-3s %2d %7lld %-40s %d %s\n", (tflag == FTW_D) ? "d" : (tflag == FTW_DNR) ? "dnr" : (tflag == FTW_DP) ? "dp" : (tflag == FTW_F) ? "f" : (tflag == FTW_DP) ? "dp" : (tflag == FTW_SL) ? "sl" : (tflag == FTW_SLN) ? "sln" : "???", ftwbuf->level, (long long) sb->st_size, fpath, ftwbuf->base, fpath + ftwbuf->base); return 0; /* To tell nftw() to continue */ } int main(int argc, char *argv[]) { int flags = 0; if (argc > 2 && strchr(argv[2], 'd') != NULL) flags |= FTW_DEPTH; if (argc > 2 && strchr(argv[2], 'p') != NULL) flags |= FTW_PHYS; nftw((argc < 2) ? "." : argv[1], display_info, 20, flags); exit(EXIT_SUCCESS); }
´ØÏ¢¹àÌÜ
stat(2), fts(3), readdir(3), feature_test_macros(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre