getcwd

Autres langues

Langue: ja

Version: 2002-04-22 (openSuse - 09/10/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

̾Á°

getcwd, get_current_dir_name, getwd - ¥«¥ì¥ó¥È¥ï¡¼¥­¥ó¥°¥Ç¥£¥ì¥¯¥È¥ê̾¤Î¼èÆÀ

½ñ¼°


#include <unistd.h>



char *getcwd(char *buf, size_t size);



#define _BSD_SOURCE     /* Or: #define _XOPEN_SOURCE 500 */

#include <unistd.h>



char *getwd(char *buf);



#define _GNU_SOURCE

#include <unistd.h>



char *get_current_dir_name(void);

ÀâÌÀ

getcwd() ´Ø¿ô¤Ï¥«¥ì¥ó¥È¥ï¡¼¥­¥ó¥°¥Ç¥£¥ì¥¯¥È¥ê¤ÎÀäÂХѥ¹Ì¾ (absolute pathname) ¤ò buf ¤Ç¼¨¤µ¤ì¤¿ size ŤÎÇÛÎó¤Ë¥³¥Ô¡¼¤¹¤ë¡£

¥«¥ì¥ó¥ÈÀäÂХѥ¹Ì¾ (current absolute pathname) ¤¬ size ¤è¤ê¤âŤ¤¾ì¹ç¤Ï¡¢ÊÖ¤êÃͤȤ·¤Æ NULL ¤¬ÊÖ¤ê errno ¤Ë ERANGE ¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¤³¤Î¥¨¥é¡¼¤ò¥Á¥§¥Ã¥¯¤·¡¢ ɬÍפ˱þ¤¸¤Æ¤è¤êŤ¤¥Ð¥Ã¥Õ¥¡¤òÍÑ°Õ¤¹¤Ù¤­¤Ç¤¢¤ë¡£

buf ¤¬ NULL ¤Î¾ì¹ç¡¢ getcwd() ¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¢¤ë¡£ POSIX.1-2001 ɸ½à¤Î³ÈÄ¥¤È¤·¤Æ¡¢ Linux (libc4, libc5, glibc) ¤Ç¤Ï¸Æ¤Ó¤À¤·»þ¤Ë buf ¤Ë NULL ¤ò»ØÄꤹ¤ë¤³¤È¤Ç getcwd() ¤¬É¬ÍפʥХåե¡¤ò malloc(3) ¤òÍѤ¤¤ÆưŪ¤Ë³ÍÆÀ¤¹¤ë¤è¤¦¤Ë¤Ç¤­¤ë¡£ ¤³¤Î¾ì¹ç¡¢ size ¤¬ 0 ¤Î¾ì¹ç¤ò½ü¤­¡¢¥Ð¥Ã¥Õ¥¡¤ÎŤµ¤Ï size ¤È¤Ê¤ë¡£ size ¤¬ 0 ¤Î¾ì¹ç¤Ë¤ÏɬÍפÊÂ礭¤µ¤¬³ÎÊݤµ¤ì¤ë¡£ ¤³¤ÎÊýË¡¤Ç³ÍÆÀ¤·¤¿¥Ð¥Ã¥Õ¥¡¤Ï free(3) ¤Ç²òÊü¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë(¤·¡¢¤½¤¦¤¹¤ë¤Î¤¬¸­ÌÀ¤Ç¤¢¤ë)¡£

get_current_dir_name() ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¼ý¤á¤ë¤Î¤Ë½½Ê¬¤ÊÂ礭¤µ¤ÎÇÛÎó¤ò malloc(3) ¤Ç³ÍÆÀ¤¹¤ë¡£´Ä¶­ÊÑ¿ô PWD ¤¬ÀßÄꤵ¤ì¤Æ¤ª¤ê¤½¤ÎÃͤ¬Àµ¤·¤±¤ì¤Ð¡¢¤½¤ÎÃͤ¬ÊÖ¤µ¤ì¤ë¡£

getwd() ¤Ï malloc(3) ¤Ë¤è¤ë¥á¥â¥ê³ÍÆÀ¤ò°ìÀڹԤʤï¤Ê¤¤¡£ buf °ú¿ô¤Ï¾¯¤Ê¤¯¤È¤â PATH_MAX ¥Ð¥¤¥È¤ÎŤµ¤ò»ý¤ÄÇÛÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£ getwd() ¤Ï¼ÂºÝ¤Î¥Ñ¥¹Ì¾¤ÎÀèƬ PATH_MAX ¥Ð¥¤¥È¤òÊÖ¤¹¡£ PATH_MAX ¤Ïɬ¤º¤·¤â¥³¥ó¥Ñ¥¤¥ë»þ¤Ë·è¤Þ¤ëÄê¿ô¤Ç¤Ï¤Ê¤¤ÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¡£ ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¾ì¹ç¤â¤¢¤ë¤·¡¢Ìµ¸ÂĹ¤Î¾ì¹ç¤â¤¢¤êÆÀ¤ë¡£ °Ü¿¢À­¤È¥»¥­¥å¥ê¥Æ¥£¾å¤ÎÍýͳ¤«¤é¡¢ getwd() ¤ÎÍøÍѤϿ侩¤µ¤ì¤Ê¤¤¡£

ÊÖ¤êÃÍ

¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È NULL ¤òÊÖ¤·¡¢ errno ¤¬¥¨¥é¡¼¤Ë½¾¤Ã¤Æ¥»¥Ã¥È¤µ¤ì¤ë¡£ À®¸ù¤¹¤ì¤Ð buf ¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤Î¾ì¹ç¤Ï buf ¤¬»Ø¤¹ÇÛÎó¤ÎÆâÍƤÏ̤ÄêµÁ¤Ç¤¢¤ë¡£

¥¨¥é¡¼

EACCES
¥Õ¥¡¥¤¥ë̾¤Î¹½À®Í×ÁǤËÂФ¹¤ëÆɤ߹þ¤ß¤¢¤ë¤¤¤Ï¸¡º÷¤Î¸¢¸Â¤¬¤Ê¤¤¡£
EFAULT
buf ¤¬ÉÔÀµ¤Ê¥¢¥É¥ì¥¹¤ò»Ø¤·¤Æ¤¤¤ë¡£
EINVAL
size °ú¿ô¤¬ 0 ¤«¤Ä¡¢ buf °ú¿ô¤¬ NULL ¥Ý¥¤¥ó¥¿¤Ç¤Ê¤¤¡£
ENOENT
¥«¥ì¥ó¥È¥ï¡¼¥­¥ó¥°¥Ç¥£¥ì¥¯¥È¥ê¤¬ºï½ü¤µ¤ì¤Æ¤¤¤ë¡£
ERANGE
size °ú¿ô¤ÎÃͤ¬¥ï¡¼¥­¥ó¥°¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎŤµ¤è¤ê¾®¤µ¤¤¡£ ¤è¤êÂ礭¤¤ÇÛÎó¤ò³ÎÊݤ·¤Æ¤â¤¦°ìÅټ¹Ԥ¹¤ëɬÍפ¬¤¢¤ë¡£

½àµò

getcwd() ¤Ï POSIX.1-2001 ¤Ë½àµò¤·¤Æ¤¤¤ë¡£ getwd() ¤Ï POSIX.1-2001 ¤Ë¸ºß¤·¤Æ¤¤¤ë¤¬¡¢¡Ö²áµî¤Î̾»Ä(LEGACY)¡×¤È¤µ¤ì¤Æ¤¤¤ë¡£ get_current_dir_name() ¤Ï GNU ³ÈÄ¥¤Ç¤¢¤ë¡£

Ãí°Õ

Linux ¤Ç¤Ï (2.1.92 °Ê¹ß)¡¢ getcwd() ¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ç¤¢¤ë¡£ ¸Å¤¤¥·¥¹¥Æ¥à¤Ç¤Ï /proc/self/cwd ¤ò»²¾È¤¹¤ë¡£ ¥·¥¹¥Æ¥à¥³¡¼¥ë¤â proc ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤â¤Ê¤¤¾ì¹ç¡¢ °ìÈÌŪ¤Ê¼ÂÁõ¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¡£ ¤³¤Î¾ì¹ç¤Ë¤ª¤¤¤Æ¤Î¤ß¡¢(Linux ¤Ç¤Ï) ¤³¤Î´Ø¿ô¤Ï EACCES ¤Ç¼ºÇÔ¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¡£

¤³¤ì¤é¤Î´Ø¿ô¤Ï¤·¤Ð¤·¤Ð¥«¥ì¥ó¥È¥ï¡¼¥­¥ó¥°¥Ç¥£¥ì¥¯¥È¥ê¤Î°ÌÃÖ¤òÊݸ¤·¡¢ ¸å¤ÇÌá¤Ã¤Æ¤¯¤ë¤¿¤á¤ËÍøÍѤµ¤ì¤ë¡£ ̤»ÈÍѤΥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬½½Ê¬¤¢¤ë¾ì¹ç¤Ï¡¢ ¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê (".") ¤ò³«¤¤¤Æ fchdir(2) ¤ò¸Æ¤Ó½Ð¤¹¤Û¤¦¤¬ÉáÄ̤Ϲ⮤ǿ®ÍêÀ­¤¬¤¢¤ë¡£ ÆÃ¤Ë Linux °Ê³°¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¾ì¹ç¤Ï¤½¤¦¤Ç¤¢¤ë¡£

´ØÏ¢¹àÌÜ

chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3), feature_test_macros(7)