realpath

Autres langues

Langue: ja

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

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

̾Á°

realpath - Àµµ¬²½¤µ¤ì¤¿ÀäÂХѥ¹Ì¾¤òÊÖ¤¹

½ñ¼°


#include <limits.h>

#include <stdlib.h>



char *realpath(const char *path, char *resolved_path);

 

ÀâÌÀ

realpath() ¤Ï path ¤È¤·¤ÆÍ¿¤¨¤é¤ì¤¿ NULL ¤Ç½ª¤ëʸ»úÎó¤ÎÃæ¤Ë¤¢¤ë ¤¹¤Ù¤Æ¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òŸ³«¤· '/./', '/../' ¤Ë¤è¤ë»²¾È¤ä;ʬ¤Ê '/' ¤ò²ò·è¤·¤Æ¡¢Àµµ¬²½¤µ¤ì¤¿ÀäÂХѥ¹Ì¾¤ò resolved_path ¤È¤¤¤¦¥Ð¥Ã¥Õ¥¡¡¼¤ÎÃæ¤Ë³ÊǼ¤¹¤ë¡£ ¤³¤Î¥Ð¥Ã¥Õ¥¡¡¼¤Î¥µ¥¤¥º¤Ï PATH_MAX ¤Ç¤¢¤ë¡£ ·ë²Ì¤È¤·¤ÆÊÖ¤ë¥Ñ¥¹¤ÎÃæ¤Ë¤Ï¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ä '/./', '/../' ¤È¤¤¤Ã¤¿Í×ÁǤϴޤޤì¤Ê¤¤¡£

ÊÖ¤êÃÍ

¥¨¥é¡¼¤¬¤Ê¤«¤Ã¤¿¾ì¹ç¡¢ realpath() ¤Ï resolved_path ¤Ø¤Î¥Ý¥¤¥ó¥¿¡¼¤òÊÖ¤¹¡£

¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¥Ì¥ë (NULL) ¥Ý¥¤¥ó¥¿¡¼¤¬Ê֤ꡢÇÛÎó resolved_path ¤ÎÆâÍƤÏÉÔÄê¤Ç¤¢¤ë¡£ ¥°¥í¡¼¥Ð¥ëÊÑ¿ô errno ¤¬¥¨¥é¡¼¤ÎÆâÍƤˤ¢¤ï¤»¤Æ¥»¥Ã¥È¤µ¤ì¤ë¡£

¥¨¥é¡¼

EACCES
¥Ñ¥¹¤Î¥Ç¥£¥ì¥¯¥È¥êÉôʬ¤Ë¡¢Æɤ߽Ф·µö²Ä¤Þ¤¿¤Ï¸¡º÷µö²Ä¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤¡£
EINVAL
path ¤« resolved_path ¤Î¤¤¤º¤ì¤«¤¬ NULL ¤Ç¤¢¤ë¡£ (libc5 ¤Ç¤Ï¡¢¤³¤Î¤è¤¦¤Ê¾ì¹ç segfault ¤òµ¯¤³¤¹¤À¤±¤Ç¤¢¤í¤¦) ⤷¡¢²¼µ­¤Î¡ÖÃí°Õ¡×¤ÎÀá¤ò»²¾È¤Î¤³¤È¡£
EIO
¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òÆɤà¤È¤­¤Ë¡¢I/O¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¡£
ELOOP
¥Ñ¥¹Ì¾¤ÎÊÑ´¹¤Ë¤¢¤¿¤ê¡¢²ò·è¤¹¤Ù¤­¥·¥ó¥Ü¥ê¥Ã¥¯¡¦¥ê¥ó¥¯¤Î¿ô¤¬Â¿²á¤®¤¿¡£
ENAMETOOLONG
¥Ñ¥¹Ì¾¤Î°ìÍ×ÁǤÎʸ»ú¿ô¤¬ NAME_MAX ¤ò±Û¤¨¤Æ¤¤¤ë¡¢¤Þ¤¿¤Ï¥Ñ¥¹Ì¾Á´ÂΤÎʸ»ú¿ô¤¬ PATH_MAX ¤ò±Û¤¨¤Æ¤¤¤ë¡£
ENOENT
»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¡£
ENOTDIR
¥Ñ¥¹¤Î¥Ç¥£¥ì¥¯¥È¥êÍ×ÁǤ¬¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤¤¡£

¥Ð¡¼¥¸¥ç¥ó

¤³¤Î´Ø¿ô¤¬ Linux ¤ËÅо줷¤¿¤Î¤Ï libc 4.5.21 ¤Ç¤¢¤ë¡£

½àµò

4.4BSD, POSIX.1-2001.

4.4BSD ¤È Solaris ¤Ç¤Ï¡¢¥Ñ¥¹Ì¾¤ÎŤµ¤Î¾å¸Â¤Ï (<sys/param.h> ¤ÎÃæ¤Ë¤¢¤ë) MAXPATHLEN ¤Ç¤¢¤ë¡£SUSv2 ¤Ç¤Ï PATH_MAX ¤È NAME_MAX ¤¬µ¬Äꤵ¤ì¤Æ¤ª¤ê¡¢ ¤³¤ì¤é¤Ï <limits.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¡¢ pathconf(3) ´Ø¿ô¤«¤éÆÀ¤é¤ì¤ë¡£°Ê²¼¤Î¤è¤¦¤Ê¥½¡¼¥¹¥³¡¼¥É¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬Â¿¤¤ (¥Ð¥°¤Î¾Ï¤â»²¾È¤Î¤³¤È) :


#ifdef PATH_MAX

  path_max = PATH_MAX;

#else

  path_max = pathconf(path, _PC_PATH_MAX);

  if (path_max <= 0)

         path_max = 4096;

#endif

4.4BSD¡¢Linux¡¢SUSv2 ¤Ç¤Ï¡¢ÊÖ¤êÃͤϾï¤ËÀäÂХѥ¹Ì¾¤Ç¤¢¤ë¡£ Solaris ¤Ç¤Ï¡¢ °ú¤­¿ô path ¤¬ÁêÂХѥ¹¤Î¾ì¹ç¡¢ÊÖ¤êÃͤ¬ÁêÂХѥ¹¤Ë¤Ê¤ë¤³¤È¤¬¤¢¤ë¡£ realpath() ¤Î¥×¥í¥È¥¿¥¤¥×Àë¸À¤Ï¡¢ libc4 ¤È libc5 ¤Ç¤Ï <unistd.h> ¤Ë¤¢¤ë¤¬¡¢ ¤½¤ì°Ê³°¤Î´Ä¶­¤Ç¤Ï¤¤¤º¤ì¤â <stdlib.h> ¤Ë¤¢¤ë¡£

Ãí°Õ

realpath() ¤Î glibc ¤Î¼ÂÁõ¤Ç¤ÏÈóɸ½à¤Î³ÈÄ¥¤¬¤Ê¤µ¤ì¤Æ¤¤¤ë¡£ resolved_path ¤Ë NULL ¤¬»ØÄꤵ¤ì¤ë¤È¡¢ realpath() ¤Ï malloc(3) ¤ò»È¤Ã¤Æ²ò·è¤·¤¿¥Ñ¥¹Ì¾¤òÊÝ»ý¤¹¤ë¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¤ò ºÇÂç¤Ç PATH_MAX ¥Ð¥¤¥È¤Þ¤Ç³ä¤êÅö¤Æ¡¢ ¤³¤Î¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ ¸Æ¤Ó½Ð¤·¸µ¤Ï¡¢ free(3) ¤ò»È¤Ã¤Æ¤³¤Î¥Ð¥Ã¥Õ¥¡¤ò²òÊü¤¹¤Ù¤­¤Ç¤¢¤ë¡£

¥Ð¥°

¤³¤Î´Ø¿ô¤Î»ÈÍѤÏÈò¤±¤ë¤³¤È¡£Àß·×Ãʳ¬¤«¤éÌäÂ꤬¤¢¤ë¤«¤é¤À¡£ (Èóɸ½à¤Î resolved_path == NULL ¤Î³ÈÄ¥µ¡Ç½¤ò»È¤ï¤Ê¤¤¸Â¤ê) ½ÐÎϥХåե¡ resolved_path ¤ÎŬÀڤʥµ¥¤¥º¤ò·èÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£ POSIX ¤Ç¤Ï¥Ð¥Ã¥Õ¥¡¡¦¥µ¥¤¥º¤È¤·¤Æ PATH_MAX ¤Ï½½Ê¬¤À¤È¤µ¤ì¤Æ¤¤¤ë¤¬¡¢ PATH_MAX ¤ÏÄêµÁºÑ¤ÎÄê¿ô¤Ç¤¢¤ëɬÍפϤʤ¯¡¢ pathconf(3) ¤ò»È¤Ã¤ÆÆÀ¤é¤ì¤ëÃͤǤ¢¤Ã¤Æ¤â¤è¤¤¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ pathconf(3) ¤«¤é¥Ð¥Ã¥Õ¥¡¡¦¥µ¥¤¥º¤ò¼èÆÀ¤·¤¿¤È¤·¤Æ¤âɬ¤º¤·¤â½½Ê¬¤Ç¤Ï¤Ê¤¤¡£ ¤Ê¤¼¤Ê¤é¡¢ pathconf(3) ¤ÎÊÖ¤êÃͤ¬Â礭²á¤®¤ÆŬÀڤ˥á¥â¥ê¤ò³ÎÊݤ¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤ ¤È POSIX ¤Ç¤Ï·Ù¹ð¤µ¤ì¤Æ¤¤¤ë¤·¡¢ pathconf(3) ¤Ï PATH_MAX ¤ËÀ©¸Â¤¬¤Ê¤¤¤³¤È¤ò¼¨¤¹ -1 ¤òÊÖ¤¹¤«¤â¤·¤ì¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£

libc4 ¤È libc5 ¤Î¼ÂÁõ¤Ï¥Ð¥Ã¥Õ¥¡¡¦¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤Î²ÄǽÀ­¤ò»ý¤Ã¤Æ¤¤¤ë (libc-5.4.13 ¤Ç½¤Àµ¤µ¤ì¤¿¤¬)¡£¤·¤¿¤¬¤Ã¤Æ¡¢mount ¤Î¤è¤¦¤Ê set-user-ID ¤µ¤ì¤ë¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¤³¤Î´Ø¿ôÁêÅö¤Î´Ø¿ô¤ò¼«Á°¤Ç»ý¤ÄɬÍפ¬¤¢¤ë¡£

´ØÏ¢¹àÌÜ

readlink(2), canonicalize_file_name(3), getcwd(3), pathconf(3), sysconf(3)