basename

Autres langues

Langue: ja

Autres versions - même langue

Version: 2000-12-14 (openSuse - 09/10/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

̾Á°

dirname, basename - ¥Ñ¥¹Ì¾¤ò²òÀϤ·¤Æ³ÆÉôʬ¤ò¼è¤ê½Ð¤¹

½ñ¼°


#include <libgen.h>



char *dirname(char *path);


char *basename(char *path);

ÀâÌÀ

·Ù¹ð: basename() ¤Ë¤Ï°Û¤Ê¤ë¥Ð¡¼¥¸¥ç¥ó¤¬ 2¤Ä¸ºß¤¹¤ë¡£²¼µ­¤Î¡ÖÃí°Õ¡×¤ÎÀá¤ò»²¾È¤Î¤³¤È¡£

dirname() ¤È basename() ¤Ï¡¢NULL ¤Ç½ªÃ¼¤µ¤ì¤¿¥Ñ¥¹Ì¾¤Îʸ»úÎó¤ò¡¢ ¥Ç¥£¥ì¥¯¥È¥êÉôʬ¡¦¥Õ¥¡¥¤¥ë̾Éôʬ¤Ëʬ³ä¤¹¤ë¡£ Ä̾ï¤Ï¡¢ dirname() ¤ÏºÇ¸å¤Î '/' ¤Þ¤Ç¤ÎÉôʬ (ºÇ¸å¤Î '/' ¤Ï´Þ¤Þ¤Ê¤¤) ¤òÊÖ¤·¡¢ basename() ¤ÏºÇ¸å¤Î '/' °Ê¹ß¤ÎÉôʬ¤òÊÖ¤¹¡£ ʸ»úÎó¤ÎËöÈø¤Ë¤Ä¤¤¤¿ '/' ʸ»ú¤Ï¡¢¥Ñ¥¹Ì¾¤Î°ìÉô¤È¤Ï¤ß¤Ê¤µ¤ì¤Ê¤¤¡£

path ¤Ë '/' ʸ»ú¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢ dirname() ¤Ïʸ»úÎó "." ¤òÊÖ¤·¡¢ basename() ¤Ï path ¤ÈƱ¤¸ÆâÍƤòÊÖ¤¹¡£ path ¤¬Ê¸»úÎó "/" ¤ËÅù¤·¤¤¾ì¹ç¤Ï¡¢ dirname() ¤â basename() ¤âʸ»úÎó "/" ¤òÊÖ¤¹¡£ path ¤¬ NULL ¥Ý¥¤¥ó¥¿¤À¤Ã¤¿¤ê¡¢¶õ¤Îʸ»úÎó¤ò»Ø¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢ dirname() ¤â basename() ¤âʸ»úÎó "." ¤òÊÖ¤¹¡£

dirname() ¤ÎÊÖ¤·¤¿Ê¸»úÎó¡¢ "/"¡¢ basename() ¤ÎÊÖ¤·¤¿Ê¸»úÎó¡¢ ¤ò½ç¤Ë·ë¹ç¤¹¤ë¤È¡¢´°Á´¤Ê¥Ñ¥¹Ì¾¤¬ÆÀ¤é¤ì¤ë¡£

dirname() ¤È basename() ¤Ï¡¢¤¤¤º¤ì¤â path ¤ÎÆâÍƤòÊѹ¹¤¹¤ë¤³¤È¤¬¤¢¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¤Ï ¥³¥Ô¡¼¤òÅϤ¹¤Î¤¬Ë¾¤Þ¤·¤¤¡£

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢ÀÅŪ¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥ê¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¤³¤È¤¬¤¢¤ê¡¢ ¤³¤ì¤é¤ÎÎΰè¤Ï¸å¤Î´Ø¿ô¸Æ¤Ó½Ð¤·¤Ç¾å½ñ¤­¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ ¤Þ¤¿¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï path ¤Î°ìÉôʬ¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¤³¤È¤â¤¢¤ë¡£¤½¤Î¤¿¤á¡¢ path ¤Ç»²¾È¤µ¤ì¤ëʸ»úÎó¤Ï¡¢´Ø¿ô¤¬ÊÖ¤¹¥Ý¥¤¥ó¥¿¤¬ÉÔÍפˤʤë¤Þ¤Ç¤Ï Êѹ¹¤·¤¿¤ê free ¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£

°Ê²¼¤Î°ìÏ¢¤ÎÎã (SUSv2 ¤«¤é°úÍÑ) ¤Ï¡¢ ¤¤¤í¤¤¤í¤Ê path ¤ËÂФ·¤Æ dirname() ¤È basename() ¤¬ÊÖ¤¹Ê¸»úÎó¤òɽ¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£


path            dirname         basename

"/usr/lib"      "/usr"          "lib"

"/usr/"         "/"             "usr"

"usr"           "."             "usr"

"/"             "/"             "/"

"."             "."             "."

".."            "."             ".."

ÊÖ¤êÃÍ

dirname() ¤È basename() ¤Ï¡¢¤¤¤º¤ì¤â NULL ¤Ç½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£

½àµò

POSIX.1-2001

Ãí°Õ

basename() ¤Ë¤Ï 2¼ïÎà¤Î°Û¤Ê¤ë¥Ð¡¼¥¸¥ç¥ó¤¬¤¢¤ë¡£ °ì¤Ä¤Ï¤¹¤Ç¤ËÀâÌÀ¤·¤¿ POSIX ¥Ð¡¼¥¸¥ç¥ó¤Ç¤¢¤ê¡¢ ¤â¤¦°ì¤Ä¤Ï GNU ¥Ð¡¼¥¸¥ç¥ó¤Ç¤¢¤ë¡£ GNU ¥Ð¡¼¥¸¥ç¥ó¤ò»ÈÍѤ¹¤ë¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¡£



    #define _GNU_SOURCE


#include <string.h>
GNU ¥Ð¡¼¥¸¥ç¥ó¤Ï°ú¤­¿ô¤òÊѹ¹¤¹¤ë¤³¤È¤Ï¤Ê¤¯¡¢ path ¤ÎËöÈø¤¬ '/'¤Î¾ì¹ç¤Ï¶õ¤Îʸ»úÎó¤òÊÖ¤¹¡£ ÆÃ¤Ë path ¤¬ "/" ¤Î¾ì¹ç¤â¶õʸ»úÎó¤òÊÖ¤¹¡£ dirname() ¤Ë¤Ï GNU ¥Ð¡¼¥¸¥ç¥ó¤Ï¤Ê¤¤¡£

glibc ¤Ç¤Ï¡¢ <libgen.h> ¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤È POSIX ¥Ð¡¼¥¸¥ç¥ó¤Î basename() ¤¬»ÈÍѤµ¤ì¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï GNU ¥Ð¡¼¥¸¥ç¥ó¤È¤Ê¤ë¡£

¥Ð¥°

glibc ¤Î POSIX ¥Ð¡¼¥¸¥ç¥ó¤Î¼ÂÁõ¤Ç¤Ï¡¢°ú¤­¿ô¤ÎÆâÍƤ¬Êѹ¹¤µ¤ì¡¢ °ú¤­¿ô¤Ë ("/usr/" ¤Ê¤É¤Î) Äê¿ôʸ»úÎó¤ò»ØÄꤵ¤ì¤ë¤È ¥»¥°¥á¥ó¥Æ¡¼¥·¥ç¥ó¥Õ¥©¡¼¥ë¥È¤òµ¯¤³¤¹¡£ ¥Ð¡¼¥¸¥ç¥ó 2.2.1 °ÊÁ°¤Î glibc ¤Ç¤Ï¡¢ glibc ¤Î dirname() ¤ÏËöÈø¤¬ '/' ʸ»ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¥Ñ¥¹Ì¾¤òÀµ¤·¤¯°·¤¨¤º¡¢ °ú¤­¿ô¤¬ NULL ¤À¤È¥»¥°¥á¥ó¥Æ¡¼¥·¥ç¥ó¥Õ¥©¡¼¥ë¥È¤òµ¯¤³¤·¤¿¡£

Îã


char *dirc, *basec, *bname, *dname;

char *path = "/etc/passwd";



dirc = strdup(path);

basec = strdup(path);

dname = dirname(dirc);

bname = basename(basec);

printf("dirname=%s, basename=%s\n", dname, bname);

´ØÏ¢¹àÌÜ

basename(1), dirname(1), feature_test_macros(7)