Á¦9Àå ÆÄÀÏ ½Ã½ºÅÛ ÀÎÅÍÆäÀ̽º
ÀÌ ÀåÀº ÆÄÀϵéÀ» ´Ù·ç±â À§ÇÑ GNU C ¶óÀ̺귯¸® ÇÔ¼öµéÀ» ¼³¸íÇϰí ÀÖ´Ù. 7Àå [I/O on Streams] 63ÆäÀÌÁö ¿¡¼ ¼³¸íµÈ ÀÔ/Ãâ·Â ÇÔ¼öµé°ú´Â ´Þ¸®, ÀÌ ÇÔ¼öµéÀº ÆÄÀϾÈÀÇ ³»¿ëº¸´Ù´Â ÆÄÀÏ ±×Â÷Á¦¸¦ ´Ù·ç´Â°Í¿¡ ´ëÇÑ ÇÔ¼öµéÀÌ´Ù.
ÀÌ Àý¿¡¼ ¼³¸íµÈ °ÍµéÀº µð·ºÅ丮µéÀ» Á¶»çÇϰí, °»½ÅÇϱâ À§ÇÑ ÇÔ¼öµé°ú ÆÄÀϵéÀ» »èÁ¦Çϰųª Àç ¸í¸íÇϱâ À§ÇÑ ÇÔ¼öµé°ú, ¿¢¼¼½º Çã¿ë°ú, °»½Å½Ã°£°ú °°Àº ÆÄÀÏ ¼Ó¼ºµéÀ» Á¶»çÇϰí, ¼³Á¤Çϱâ À§ÇÑ ÇÔ¼öµéÀÌ´Ù.
9.1 ÀÛ¾÷ µð·ºÅ丮.
°¢ ÇÁ·Î¼¼½º´Â ÇÑ µð·ºÅ丮¿Í ¿¬°üµÇ¾î ÀÖ°í, ±×°ÍÀ» ÇöÀç ÀÛ¾÷ µð·ºÅ丮¶ó ºÎ¸£°Å³ª, °£´ÜÇÏ°Ô ÀÛ ¾÷ µð·ºÅ丮¶ó ºÎ¸¥´Ù. µð·ºÅ丮 À̸§Àº ÆÄÀÏÀ̸§°ú °°Àº ¹æ¹ýÀ¸·Î »ç¿ëµÈ´Ù. ( 6.2.2Àý [File Name Resolution] 59ÆäÀÌÁö ÂüÁ¶ )
´ç½ÅÀÌ ·Î±×ÀÎÇÏ°í »õ·Î¿î ¼¼¼Ç(session)À» ½ÃÀÛÇÒ ¶§, ´ç½ÅÀÇ ÀÛ¾÷ µð·ºÅ丮´Â ½Ã½ºÅÛ À¯Àú µ¥ÀÌÅÍ º£À̽º¾È¿¡ ´ç½ÅÀÇ ·Î±×ÀÎ °èÁ¤°ú ¿¬°üµÈ Ȩ µð·ºÅ丮(home directory)·Î Ãʱ⼳Á¤µÈ´Ù. ´ç½ÅÀº getpwuid ³ª getpwnam À» »ç¿ëÇØ¼ »ç¿ëÀÚÀÇ È¨ µð·ºÅ丮¸¦ ãÀ» ¼ö ÀÖ´Ù; 25.12Àý[User Database] 360 ÆäÀÌÁö ÂüÁ¶.
--- ¿ªÀÚÁÖ : ¼¼¼Ç(session) : »ç¿ëÀÚ°¡ ÄÄÇ»ÅÍ¿ÍÀÇ ¿¬°áÀÌ ½ÃÀÛµÈ ¼ø°£ºÎÅÍ ´ÜÀýµÇ´Â ¼ø°£±îÁö¸¦ ÇϳªÀÇ ³í¸®ÀûÀÎ ´ÜÀ§·Î ±¸ºÐÇØ³õÀº °Í
»ç¿ëÀÚ´Â cd¿Í °°Àº ½© ¸í·É¾î¸¦ »ç¿ëÇØ¼ ÀÛ¾÷ µð·ºÅ丮¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. ÀÌ Àý¿¡¼ ¼³¸íÇϰí ÀÖ´Â ÇÔ¼öµéÀº ÀÌµé ¸í·É¿¡ ÀÇÇØ »ç¿ëµÇ°í, ¶ÇÇÑ ÀÛ¾÷ µð·ºÅ丮¸¦ Á¶»çÇϰí, º¯°æÇÏ·Á´Â ´Ù¸¥ ÇÁ·Î±× ·¥µé¿¡ ÀÇÇØ »ç¿ëµÈ´Ù. À̵é ÇÔ¼öµéÀÇ ÇÁ·ÎÅäŸÀÔÀº Çì´õÆÄÀÏ 'unistd.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : char * getcwd (char *buffer, size_t size)
getcwd ÇÔ¼ö´Â ÇöÀçÀÇ ÀÛ¾÷ µð·ºÅ丮¸¦ ³ªÅ¸³»´Â ÆÄÀÏ À̸§À», ´ç½ÅÀÌ Á¦°øÇÑ ¹®ÀÚ ¹è¿ ¹öÆÛ¿¡ ±×°ÍÀ» ÀúÀåÇÏ¿© ¸®ÅÏÇÑ´Ù. sizeÀμö´Â ¹öÆÛÀÇ ÇÒ´ç Å©±âÀÌ´Ù.
ÀÌ ÇÔ¼ö¿¡¼ GNU ¶óÀ̺귯¸®´Â ´ç½ÅÀÌ buffer Àμö¿¡ ³Î Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ±×·¯ ¸é getcwd´Â malloc( 3.3Àý [Unconstrained Allocation] 22ÆäÀÌÁö)À» »ç¿ëÇØ¼ ÀÚµ¿ÀûÀ¸·Î ¹öÆÛ¸¦ ÇÒ ´çÇÑ´Ù. ¸¸ÀÏ ±× size°¡ 0º¸´Ù Å©´Ù¸é ¹öÆÛ´Â ±× Å©±â·Î ÇÒ´çµÇ°í; ±×·¸Áö ¾Ê´Ù¸é ¹öÆÛ´Â °á°ú¸¦ Àú ÀåÇϱ⿡ ÇÊ¿äÇÑ ¸¸ÅÀÇ Å©±â·Î ÇÒ´çµÈ´Ù.
¸®ÅϰªÀº ¼º°øÇÏ¸é ¹öÆÛÀ̰í, ½ÇÆÐÇÏ¸é ³Î Æ÷ÀÎÅÍÀÌ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇÇϰí ÀÖ´Â ¿¡·¯ »óȲÀÌ´Ù.
EINVAL
sizeÀμö°¡ 0Àε¥ buffer°¡ ³Î Æ÷ÀÎÅͰ¡ ¾Æ´Ï´Ù.
ERANGE
sizeÀμö°¡ ÀÛ¾÷ µð·ºÅ丮 À̸§ÀÇ ±æÀ̺¸´Ù ÀÛ´Ù. ´ç½ÅÀº ¹è¿À» ´õ Å©°Ô ÇÒ´çÇÏ°í ´Ù½Ã ½ÃµµÇ϶ó.
EACCES
Àб⠿äûÀ̳ª, ÆÄÀÏÀ̸§ÀÇ ±¸¼º¿ä¼Ò ã±â°¡ °ÅºÎµÇ¾ú´Ù.
À̰÷¿¡ getcwdÀÇ Ç¥Áص¿ÀÛ¸¸À» »ç¿ëÇÑ GNUÀÇ getcwd (NULL, 0)ÀÇ µ¿ÀÛÀ» º¸¿©ÁÖ´Â ¿¹°¡ÀÖ´Ù.
char *gnu_getcwd ()
{
int size = 100;
char *buffer = (char *) xmalloc (size);
while (1)
{
char *value = getcwd (buffer, size);
if (value != 0)
return buffer;
size *= 2;
free (buffer);
buffer = (char *) xmalloc (size);
}
}
/* ´Ù ¾Æ½Ã°ÚÁö¸¸... Àá½Ã ¼³¸íÀ» ÇÕÁÒ~ xmallocÀ» ÀÌ¿ëÇØ¼ 100¹ÙÀÌÆ® ¸¸ÅÀÇ ¹öÆÛ¸¦ ÇÒ´çÇÑ ´Ù À½...
while ·çÇÁ¸¦ µ¹¸®³×¿ä. while·çÇÁÀÇ Á¶°ÇÀ» 1·Î ÇØ³õ°í ·çÇÁ¾ÈÀÇ Á¶°Ç¿¡ µû¶ó¼ ·çÇÁ¸¦ ¹þ¾î³ª °Ô µÇ´Âµ¥... getcwdÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ À̸§À» ¾ò¾ú´Âµ¥, ±× Å©±â°¡ 0ÀÌ ¾Æ´Ï¸é ¹öÆÛ¸¦ ¸®ÅÏÇÏ°í ·ç ÇÁ¸¦ ¹þ¾î³ª°í ±×·¸Áö ¾ÊÀ¸¸é size¿¡ 2¸¦ °öÇØ¼ (Áï.. ¹öÆÛÀÇ Å©±â¸¦ ´Ã¸®±â À§ÇØ ) ¿ø·¡ÀÇ ¹öÆÛ ´Â ÇØÁ¦ÇÏ°í ´Ù½Ã Å« Å©±âÀÇ ¹öÆÛ¸¦ ÇÒ´ç¹Þ¾Æ¼ ´Ù½Ã ·çÇÁÀÇ Ã³À½À¸·Î µ¹¾Æ°¡°í.. ³¡..*/
xmalloc¿¡ ´ëÇÑ Á¤º¸´Â 3.3.3Àý [Malloc Examples] 22 ÆäÀÌÁö¸¦ ÂüÁ¶Ç϶ó. xmallocÀº ¶óÀ̺귯¸® ÇÔ¼ö°¡ ¾Æ´Ï¶ó ´ëºÎºÐÀÇ GNU ¼ÒÇÁÆ®¿þ¾î¿¡¼ »ç¿ëµÇ´Â »ç¿ëÀÚÁ¤ÀÇ À̸§ÀÌ´Ù.
ÇÔ¼ö : char * getwd (char *buffer)
À̰ÍÀº getcwd¿Í À¯»çÇÏ´Ù. GNU ¶óÀ̺귯¸®´Â BSD¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ getwd¸¦ Á¦°øÇϰí ÀÖ´Ù. ¹öÆÛ´Â Àû¾îµµ PATH_MAX ¹ÙÀÌÆ® ±æÀÌÀÇ ¹è¿À» °¡¸®Å°´Â Æ÷ÀÎÅͰ¡ µÈ´Ù.
ÇÔ¼ö : int chdir (const char *filename)
ÀÌ ÇÔ¼ö´Â filenameÀ¸·Î ÇÁ·Î¼¼½ºÀÇ ÀÛ¾÷ µð·ºÅ丮¸¦ ¼³Á¤ÇϱâÀ§ÇØ »ç¿ëµÈ´Ù. º¸Åë ¼º°øÇÏ¸é ¸®ÅÏ °ªÀº 0ÀÌ´Ù. ¸¸ÀÏ -1ÀÌ ¸®ÅÏµÇ¸é ¿¡·¯°¡ ¹ß»ýÇßÀ½À» ³ªÅ¸³½´Ù. ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇÇϰí ÀÖ´Â ¿¡·¯»ó Ȳ errno´Â ´ëºÎºÐ ÆÄÀÏ À̸§ÀÇ ¹®¹ýÀû ¿¡·¯À̰í( 6.2.3Àý [File Name Errors] 60ÆäÀÌÁö ÂüÁ¶) ENOTDIRÀº ÆÄÀÏ À̸§ÀÌ µð·ºÅ丮°¡ ¾Æ´ÔÀ» ³ªÅ¸³½´Ù.
9.2 ´Ù·ºÅ丮 ¾ï¼¼½ºÇϱâ.
ÀÌÀý¿¡¼ ¼³¸íÇϰí Àִ°͵éÀº ÇÑ µð·ºÅ丮 ÆÄÀÏÀÇ ³»¿ëÀ» Àдµ¥ ¾²¿©Áø´Ù. À̰ÍÀº ´ç½ÅÀÇ ÇÁ·Î ±×·¥ÀÌ ¾Æ¸¶µµ ¸Þ´ºÀÇ ÀϺκÐÀ¸·Î½á,µð·ºÅ丮 ¾ÈÀÇ ¸ðµç ÆÄÀϵéÀÇ ¸®½ºÆ®¸¦ ¿øÇÒ ¶§ À¯¿ëÇÏ´Ù.
opendir ÇÔ¼ö´Â µð·ºÅ丮 ¿£Æ®¸®µé(entries)À» ±× ¿ä¼Ò·Î °®°í ÀÖ´Â µð·ºÅ丮 ½ºÆ®¸²À» °³¹æÇÑ´Ù. readdirÀº struct dirent objects·Î¼ Ç¥ÇöµÈ ±× ¿£Æ®¸®µéÀ» µð·ºÅ丮 ½ºÆ®¸²¿¡¼ ¾ò±âÀ§ÇØ »ç¿ëÇÑ´Ù. °¢ ¿£Æ®¸®¸¦ À§ÇÑ ÆÄÀÏÀÇ À̸§Àº ÀÌ ±¸Á¶Ã¼ÀÇ d_name ¾È¿¡ ÀúÀåµÇ¾îÀÖ´Ù. 7Àå [I/O on Streams] 63 ÆäÀÌÁö¿¡ ¼³¸íµÈ, ¿ø·¡ÀÇ ÆÄÀϵéÀ» À§ÇÑ ½ºÆ®¸² µµ±¸µé°ú À̰÷¿¡ Àִ°͵é°ú´Â À¯»çÇÏ´Ù.
9.2.1 µð·ºÅ丮 ¿£Æ®¸®ÀÇ Çü½Ä
ÀÌÀýÀº ´ç½ÅÀÌ µð·ºÅ丮 ½ºÆ®¸²À¸·Î ºÎÅÍ È¹µæÇÑ, ´ÜÀÏ µð·ºÅ丮 ¿£Æ®¸®¿¡¼ ¹«¾ùÀ» ¹ß°ßÇÒ¼ö ÀÖ´Â Áö¸¦ ¼³¸íÇϰí ÀÖ´Ù. ¸ðµç ½Éº¼µéÀº Çì´õÆÄÀÏ'dirent.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
µ¥ÀÌÅÍŸÀÔ : struct dirent
À̰ÍÀº µð·ºÅ丮 ¿£Æ®¸®µé¿¡ ´ëÇÑ ¸®ÅÏ Á¤º¸·Î¼ »ç¿ëµÇ´Â ±¸Á¶Ã¼ ŸÀÔÀÌ´Ù. ±×°ÍÀº ´ÙÀ½°ú °°Àº ÇʵåµéÀº Æ÷ÇÔÇϰí ÀÖ´Ù.
char *d_name
À̰ÍÀº ³Î ¹®ÀÚ·Î ³¡³ª´Â ÆÄÀÏÀ̸§ ¿ä¼ÒÀÌ´Ù. À̰ÍÀº ¸ðµç POSIX ½Ã½ºÅÛ»ó¿¡¼ ´ç½ÅÀÌ ¼¿ ¼ö ÀÖ´Â À¯ÀÏÇÑ ÇʵåÀÌ´Ù.
ino_t d_fileno
À̰ÍÀº ÆÄÀÏ ½Ã¸®¾ó ³Ñ¹öÀÌ´Ù. BSD¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ, ´ç½ÅÀº d-ino·Î¼ ÀÌ ¸â¹ö¸¦ ´ëÄ¡ÇÒ ¼ö ÀÖ´Ù.
size_t d_namlen
À̰ÍÀº ³Î Á¾·á ¹®ÀÚ°¡ Æ÷ÇÔµÇÁö ¾ÊÀº, ÆÄÀÏ À̸§ÀÇ ±æÀÌÀÌ´Ù.
ÀÌ ±¸Á¶Ã¼´Â ¾ÕÀ¸·Î ºÎ°¡ÀûÀÎ ¸â¹öµéÀ» Æ÷ÇÔÇÒ °ÍÀÌ´Ù. ÆÄÀÏÀÌ ´ÙÁßÀÇ À̸§µéÀ» °¡Áú ¶§, °¢°¢ÀÇ À̸§µéÀº ÀÚ½ÅÀÇ µð·ºÅ丮 ¿£Æ®¸®¸¦ °®´Â´Ù. ´ÜÀÏ ÆÄÀÏ¿¡ ¼ÓÇÑ µð·ºÅ丮 ¿£Æ®¸®µéÀ» °¡¸®Å°´Â À¯ÀÏ ÇÑ ¹æ¹ýÀº d_fileno Çʵ忡 µ¿ÀÏÇÑ °ªÀ» ÁÜÀ¸·Î½á ÇÒ ¼ö ÀÖ´Ù.
Å©±â, °»½Å ½Ã°£ °ú °°Àº ÆÄÀÏ ¼Ó¼º°ú, ÆÄÀÏ ±×ÀÚüÀÇ ÀϺκаú °°Àº °ÍÀº ¾î´À Ưº°ÇÑ µð·ºÅ丮 ¿£ Æ®¸®°¡ ¾Æ´Ï´Ù. 9.8Àý [File Attributes] 131ÆäÀÌÁö ÂüÁ¶.
9.2.2 µð·ºÅ丮 ½ºÆ®¸² °³¹æÇϱâ
ÀÌÀýÀº µð·ºÅ丮 ½ºÆ®¸²À» ¾î¶»°Ô °³¹æÇÏ´ÂÁö ¼³¸íÇϰí ÀÖ´Ù. ¸ðµç ½Éº¼µéÀº Çì´õÆÄÀÏ 'dirent.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
µ¥ÀÌÅÍŸÀÔ : DIR
DIR µ¥ÀÌÅÍŸÀÔÀº µð·ºÅ丮 ½ºÆ®¸²À» ³ªÅ¸³½´Ù.
´ç½ÅÀº struct dirent ³ª DIR µ¥ÀÌÅÍŸÀÔµé·Î objectsµéÀ» ÇÒ´ç¹ÞÀ» ¼ö ¾ø´Ù. ´ë½Å¿¡ ´ç½ÅÀº ´ÙÀ½ ¿¡ ÀÖ´Â ÇÔ¼öµéÀ» »ç¿ëÇÔÀ¸·Î ÀÎÇØ¼ ¸®ÅÏµÈ Æ÷ÀÎÅ͸¦ »ç¿ëÇØ¼ À̵é objects¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
ÇÔ¼ö : DIR * opendir (const char *dirname)
opendir ÇÔ¼ö´Â ÆÄÀÏ À̸§ÀÌ dirnameÀÎ µð·ºÅ丮¸¦ Àбâ À§Çؼ µð·ºÅ丮 ½ºÆ®¸²À» °³¹æÇÏ°í ¸®ÅÏ ÇÑ´Ù. ±× ½ºÆ®¸²Àº DIR * ŸÀÔÀ» °®´Â´Ù. ¸¸ÀÏ ¼º°øÇÏÁö ¸øÇϸé opendirÀº ³Î Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù. º¸Åë ½±°Ô ÀϾ´Â ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯µé¿¡ ´õÇÏ¿©( 6.2.3 [File Nmae Errors], 60 ÆäÀÌÁö ÂüÁ¶), ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇÇϰí ÀÖ´Â ¿¡·¯ »óȲÀÌ´Ù.
EACCES
dirnameÀÇ À̸§À» °¡Áø µð·ºÅ丮¸¦ Àбâ À§ÇÑ ¿äûÀÌ °ÅºÎµÇ¾ú´Ù.
EMFILE
±× ÇÁ·Î¼¼½º°¡ ³Ê¹« ¸¹Àº ÆÄÀϵéÀ» °³¹æÇß´Ù.
ENFILE
µð·ºÅ丮¸¦ Æ÷ÇÔÇϰí ÀÖ´Â Àüü ½Ã½ºÅÛÀ̳ª, ¾Æ¸¶µµ ÆÄÀÏ ½Ã½ºÅÛÀÌ ±× ¼ø°£¿¡ ´õ ÀÌ»ó ÆÄÀÏÀ» °³¹æ ÇÏ´Â °ÍÀº Áö¿øÇÏÁö ¾Ê´Â´Ù. ( ÀÌ ¹®Á¦´Â GNU½Ã½ºÅÛ¿¡¼´Â ¹ß»ýÇÒ ¼ö ¾ø´Ù.
DIR ŸÀÔÀº ÆÄÀÏ ±â¼úÀÚ¿Í, ±×¸®°í open ÇÔ¼ö¿¡¼ »ç¿ëµÇ´Â opendir ÇÔ¼ö¿¡¼ »ç¿ëµÇ¾îÁø´Ù. 8Àå [Low-Level I/O} 103ÆäÀÌÁö ÂüÁ¶. µð·ºÅ丮 ½ºÆ®¸²µé°ú Æ÷ÇÔµÈ ÆÄÀÏ ±â¼úÀÚµéÀº exec¿¡¼ Æó¼èµÈ´Ù. 9 23.5Àý [Executing a File] 327 ÆäÀÌÁö ÂüÁ¶ )
9.2.3 µð·ºÅ丮 ½ºÆ®¸² ÀÐ°í ´Ý±â.
ÀÌÀýÀº µð·ºÅ丮 ½ºÆ®¸²À¸·Î ºÎÅÍ µð·ºÅ丮 ¿£Æ®¸®µéÀ» ¾î¶»°Ô Àаí, ±×·¸°Ô ÇÑ ÈÄ ±× ½ºÆ®¸²À» ¾î ¶»°Ô ´ÝÀ»°ÍÀÎÁö¸¦ ¼³¸íÇϰí ÀÖ´Ù. ¸ðµç ½Éº¼µéÀº Çì´õÆÄÀÏ 'dirent.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : struct dirent * readdir (DIR *dirstream)
dl ÇÔ¼ö´Â µð·ºÅ丮·ÎºÎÅÍ ´ÙÀ½ ¿£Æ®¸®¸¦ Àд´Ù. º¸Åë ¸®ÅϰªÀº ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦ °®°í ÀÖ´Â ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍÀÌ´Ù. ÀÌ ±¸Á¶Ã¼´Â Á¤ÀûÀ¸·Î ÇÒ´ç µÇ°í ±×ÈÄ¿¡ ÀϾ´Â È£Ãâ¿¡ ÀÇÇØ¼ °»½ÅµÇ¾îÁú ¼ö ÀÖ´Ù.
À̽ļº ³ëÆ® : ¾î¶² ½Ã½ºÅÛ¿¡¼´Â, readdirÀº `.'°ú `..'°¡ ¾î´À µð·ºÅ丮 ¿¡¼ À¯¿ëÇÑ ÆÄÀÏÀ̸§ ÀÏÁö¶óµµ, ±×°ÍµéÀ» À§ÇÑ ¿£Æ®¸®µéÀ» ¸®ÅÏÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. 6.22 [File Name Resolution] 59 Æä ÀÌÁö ÂüÁ¶
¸¸ÀÏ ±× µð·ºÅ丮 ¾È¿¡ ´õ ÀÌ»ó ¿£Æ®¸®°¡ ¾ø°Å³ª, ¿¡·¯°¡ °ËÃâµÇ¸é, readdirÀº ³Î Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇÇÑ ¿¡·¯ »óȲÀÌ´Ù.
EBADF
dirstreamÀμö°¡ À¯¿ëÇÏÁö ¾Ê´Ù.
ÇÔ¼ö : int closedir (DIR *dirstream)
ÀÌ ÇÔ¼ö´Â µð·ºÅ丮 ½ºÆ®¸² dirstreamÀ» Æó¼èÇÑ´Ù. ¼º°øÇϸé 0À» ¸®ÅÏÇÏ°í ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ ´Ù.
´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇÇϰí ÀÖ´Â ¿¡·¯»óȲÀÌ´Ù.
EBADF
dirstreamÀμö°¡ À¯¿ëÇÏÁö ¾Ê´Ù.
9.2.4 µð·ºÅ丮ÀÇ ÆÄÀÏÀ» ¸®½ºÆ®ÇÏ´Â °£´ÜÇÑ ÇÁ·Î±×·¥.
À̰÷¿¡ ÇöÀç ÀÛ¾÷ µð·ºÅ丮ÀÇ ÆÄÀϵéÀÇ À̸§À» Ãâ·ÂÇÏ´Â °£´ÜÇÑ ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù.
#include <stddef.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main (void)
{
/* DIR°ú struct dirent´Â À§¿¡ ¼³¸íÀÌ Àֳ׿ä... Èå.. */
DIR *dp;
struct dirent *ep;
/* ÇöÀçÀÇ µð·ºÅ丮¸¦ °³¹æÇؼ dp¿¡ ³Ö¾î¶ó!!! */
dp = opendir ("./");
/* ¸¸ÀÏ °³¹æÀÌ µÆ´Ù¸é dpÀÇ ¿£Æ®¸®¸¦ ÀÐ¾î¼ ep¿¡ ³Ö°í ±× ±¸Á¶Ã¼¿¡¼ d_name¸â¹ö¸¦ Ãâ·ÂÇ϶ó.*/
if (dp != NULL)
{
while (ep = readdir (dp))
puts (ep->d_name);
(void) closedir (dp);
}
/* °³¹æÀÌ ¾ÈµÆ´Ù¸é ¿¡·¯ ¸Þ½ÃÁö Ãâ·Â... */
else
puts ("Couldn't open the directory.");
return 0;
}
µð·ºÅ丮¾È¿¡ ³ªÅ¸³ª´Â ÆÄÀϵéÀÇ ¼ø¼´Â ºÒ±ÔÄ¢ÀûÀÌ´Ù. À̰ͺ¸´Ù ´õ À¯¿ëÇÑ ÇÁ·Î±×·¥Àº ±×µéÀ» Ãâ ·ÂÇϱâ Àü¿¡ ¿£Æ®¸®µéÀ» Á¤·Ä(¾Æ¸¶µµ ¾ËÆÄºª ¼ø¼·Î..)ÇÏ´Â °ÍÀÌ´Ù; 15.3Àý [Array Sort Function] 217 ÆäÀÌÁö ÂüÁ¶.
9.2.5 µð·ºÅ丮 ½ºÆ®¸²ÀÇ ·£´ý ¾ï¼¼½º.
ÀÌ ÀýÀº ÀÌ¹Ì °³¹æµÈ µð·ºÅ丮 ½ºÆ®¸²À¸·Î ºÎÅÍ Àоú´ø ÇÑ ºÎºÐÀ» ¾î¶»°Ô ´Ù½Ã ÀÐÀ» ¼ö ÀÖ´ÂÁö¸¦ ¼³¸íÇϰí ÀÖ´Ù. ¸ðµç ½Éº¼µéÀº Çì´õÆÄÀÏ 'dirent.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : void rewinddir (DIR *dirstream)
rewinddirÇÔ¼ö´Â µð·ºÅ丮 ½ºÆ®¸² dirstreamÀ» Àç¼³Á¤Çϴµ¥ »ç¿ëµÇ¾îÁö±â ¶§¹®¿¡ ¸¸ÀÏ ´ç½ÅÀÌ readdirÀ» È£ÃâÇÏ¸é ±×°ÍÀº ´Ù½Ã µð·ºÅ丮ÀÇ Ã¹ ¹øÂ° ¿£Æ®¸®¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ¶Ç ÇÑ opendir·Î °³¹æµÈÈÄ µð·ºÅ丮¾ÈÀÇ ÆÄÀϵéÀÌ ´õÇØÁö°Å³ª, Á¦°ÅµÈÀûÀÌ ÀÖ´ÂÁö¿¡ ´ëÇѰ͵µ ÁöÀûÇÑ´Ù. ( ÀÌµé ÆÄÀϵéÀ» À§ÇÑ ¿£Æ®¸®µéÀº ´ç½ÅÀÌ ¸¶Áö¸·À¸·Î È£ÃâÇß´ø opendirÀ̳ª rewinddir ÀÌÈÄ¿¡ ´õÇØ Áö°Å³ª Á¦°ÅµÈ°ÍÀ̶ó¸é readdirÀ» ÅëÇØ ¸®Åϵɼöµµ, ¸®ÅϵÇÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù.
ÇÔ¼ö : off_t telldir (DIR *dirstream)
telldir ÇÔ¼ö´Â µð·ºÅ丮 ½ºÆ®¸² dirstreamÀÇ ÆÄÀÏ À§Ä¡¸¦ ¸®ÅÏÇÑ´Ù. ´ç½ÅÀº ±× À§Ä¡¿¡ µð·ºÅ丮 ½º Æ®¸²À» ÀúÀåÇϱâ À§ÇÑ ÇÔ¼ö seekdir¿¡ ÀÌ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÇÔ¼ö : seekdir (DIR *dirstream, off_t pos)
seekdirÇÔ¼ö´Â pos·Î µð·ºÅ丮 ½ºÆ®¸² dirstreamÀÇ ÆÄÀÏ À§Ä¡¸¦ ¼³Á¤ÇÑ´Ù. ±× °ª pos´Â ÀÌ Æ¯º°ÇÑ ½ºÆ®¸²»ó¿¡¼ ¹Ì¸® telldirÀ» È£ÃâÇѰÍÀÇ °á°úÀ̾î¾ß ÇÑ´Ù; µð·ºÅ丮¸¦ Æó¼èÇϰí, ´Ù½Ã ¿±â´Â telldir ¿¡ ÀÇÇØ ¸®ÅÏµÈ °ªµéÀ» ¹«È¿·Î ¸¸µé ¼öÀÖ´Ù.
9.3 ÇÏµå ¸µÅ©
POSIX ½Ã½ºÅÛ¿¡¼´Â, ÇÑ °³ÀÇ ÆÄÀÏÀÌ µ¿½Ã¿¡ ¸¹Àº ´Ù¸¥À̸§À» ¼ÒÀ¯ÇÒ ¼ö ÀÖ´Ù. ±× À̸§µé ¸ðµÎ´Â µ¿µîÇÏ°Ô ½ÇÁ¦·Î Á¸ÀçÇϰí, ±×µéÁß ¾î´À°Íµµ ´Ù¸¥°ÍµéÀ» ÃëÇÒ ¼ö ÀÖ´Ù.
ÆÄÀÏ¿¡ À̸§À» ´õÇϱâ À§Çؼ, link ÇÔ¼ö¸¦ »ç¿ëÇ϶ó. ( »õ·Î¿î À̸§Àº ÆÄÀÏ¿¡ Çϵ帵ũ¶ó°í ºÒ¸®¿ö Áø´Ù. ) ÆÄÀÏ¿¡ ¸¸µé¾îÁø »õ·Î¿î ¸µÅ©´Â ÆÄÀÏÀÇ ³»¿ëµéÀº º¹»çÇÏÁö ¾Ê´Â´Ù; ±×°ÍÀº ±×³É °£´ÜÈ÷ ±â Á¸¿¡ ÀÖ´Â ÆÄÀÏ¿¡ »õ·Î¿î À̸§À» Çϳª ´õÇÒ»ÓÀÌ´Ù.
ÇϳªÀÇ ÆÄÀÏÀº ¿©·¯°³ÀÇ µð·ºÅ丮µé¿¡ À̸§À» °¡Áú¼ö ÀÖ¾î¼, ÆÄÀÏ ½Ã½ºÅÛÀÇ ±¸Á¶´Â Á¤Àû °èÃþµµ³ª Æ®¸®¸ð¾çÀÌ ¾Æ´Ï´Ù.
´ÜÀÏÇÑ ÆÄÀÏ ½Ã½ºÅ۾ȿ¡ Á¸ÀçÇϴ Ưº°ÇÑ ÆÄÀÏ¿¡¼, ±× ÆÄÀÏ À̸§µéÀº ¸ðµÎ ´ÜÀÏÇÑ ÆÄÀÏ ½Ã½ºÅÛÀÇ µð·ºÅ丮¾È¿¡ Á¸ÀçÇØ¾ß¸¸ ÇÑ´Ù. link´Â ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ±× ÆÄÀÏ¿¡ Çϵ帵ũ¸¦ ¸¸µé·Á°í ½ÃµµÇÏ¸é ¿¡·¯¸¦ Ãâ·ÂÇÑ´Ù.
¿ªÀÚÁÖ : ±×·¯´Ï±î.. ¾î¶² ÆÄÀÏ¿¡¼ ¸µÅ©µÈ °Íµéµµ ¸ðµÎ ¿ø·¡ÀÇ ÆÄÀϰú °°Àº ÆÄÀÏ ½Ã½ºÅ۾ȿ¡ Á¸Àç ÇØ¾ßÁö, ´Ù¸¥°÷¿¡ ÀÖÀ¸¸é ¾ÈµÈ´Ù´Â ¸»¾¸. Áï, ÆÄÀÏ ½Ã½ºÅ۵鰣¿¡ ÆÄÀÏÀ» ¸µÅ©ÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ ´Ù.
linkÇÔ¼öÀÇ ÇÁ·ÎÅäŸÀÔÀº Çì´õÆÄÀÏ 'uinstd.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : int link (const char *oldname, const char *newname)
linkÇÔ¼ö´Â oldnameÀÇ À̸§À» °¡Áø ÇöÁ¸Çϰí ÀÖ´Â ÆÄÀÏ¿¡ newnameÀ̶ó´Â À̸§À» °®´Â »õ·Î¿î ¸µ Å©¸¦ ¸¸µç´Ù. ÀÌ ÇÔ¼ö´Â ¼º°øÇϸé 0À» ¸®ÅÏÇÏ°í ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ´Ù. º¸ÅëÀÇ ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯¿¡ ´õÇÏ¿©¼( 6.2.3Àý[File Name Errors] 60ÆäÀÌÁö ÂüÁ¶), ´ÙÀ½ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇÇϰí ÀÖ ´Â ¿¡·¯»óȲÀÌ´Ù.
EACCES
»õ·Î¿î ¸µÅ©°¡ ¾²¿©Á®¾ßÇÒ µð·ºÅ丮°¡ ±â·Ï ºÒ°¡´ÉÀÌ´Ù.
EEXIST
ÀÌ¹Ì newnameÀÇ À̸§À» °¡Áø ÆÄÀÏÀÌ ÀÖ´Ù. ¸¸ÀÏ »õ·Î¿î ¸µÅ©·Î ±âÁ¸ÀÇ ¸µÅ©¸¦ ´ëÄ¡ÇÏ°Ô ¿øÇÑ´Ù¸é, ´ç½ÅÀº ¸ÕÀú ±âÁ¸ÀÇ ¸µÅ©¸¦ Á¦°ÅÇØ¾ß ÇÑ´Ù.
EMLINK
±×°Í¿£ ÀÌ¹Ì oldname¿¡ ÀÇÇØ À̸§µÈ ³Ê¹«¸¹Àº ¸µÅ©°¡ ÀÖ´Ù. ( ¸µÅ©ÀÇ ÃÖ´ë°¹¼ö´Â LINK_MAXÀÌ ´Ù; 27.6Àý [Limits for Files] 374ÆäÀÌÁö ÂüÁ¶.)
Àß ¸¸µé¾îÁø ÆÄÀÏ ½Ã½ºÅÛµéÀº °áÄÚ ÀÌ ¿¡·¯¸¦ ¹ß»ý½ÃŰÁö ¾Ê´Â´Ù, ¿Ö³ÄÇÏ¸é ±×µéÀº ´ç½ÅÀÇ µð½ºÅ©°¡ °¡Áú¼ö ÀÖ´Â ¸¸ÅÀÇ ¸¹Àº ¸µÅ©¸¦ Çã¿ëÇϱ⠶§¹®ÀÌ´Ù. ±×·¸Áö¸¸, ´ç½ÅÀº ´Ù¸¥ ±â°è»óÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ» ³×Æ®¿÷À¸·Î ¾ï¼¼½º ÇÒ¼öµµ ÀÖÀ¸¹Ç·Î, ´ç½ÅÀÇ ½Ã½ºÅÛÀÌ ÀÌ·± ¿¡·¯¸¦ ¹ß»ý½ÃŰÁö ¾Ê´Â´Ù°í ÇÏ´õ¶óµµ, ´ç½ÅÀº ¿©ÀüÈ÷ ¸µÅ©ÀÇ °³¼ö¿¡ ½Å°æÀ» ½á¾ßÇÑ´Ù.
ENOENT
oldnameÀ̶õ À̸§À» °¡Áø ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ´ç½ÅÀº ±× ÆÄÀÏÀÌ ¾øÀ¸¸é, ÆÄÀÏ¿¡ ¸µÅ©¸¦ ¸¸µé ¼ö ¾ø´Ù.
ENOSPC
»õ·Î¿î ¸µÅ©¸¦ Æ÷ÇÔÇØ¾ßÇÒ µð·ºÅ丮³ª ÆÄÀÏ ½Ã½ºÅÛÀÌ "°¡µæÃ¡°í" ´õ ÀÌ»ó È®ÀåµÇÁö ¾Ê´Â´Ù.
EPERM
¾î¶²°÷¿¡¼´Â Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚ¿¡°Ô¸¸ µð·ºÅ丮¿¡ ¸µÅ©¸¦ ¸¸µå´Â °ÍÀ» Çã¿ëÇϰí, ´Ù¸¥ »ç¿ëÀÚ µé¿¡°Ô´Â ¿ÏÀüÈ÷ ÀÌ ¸í·ÉÀ» ±ÝÁöÇÑ´Ù. ÀÌ ¿¡·¯´Â ±× ¹®Á¦¸¦ ¾Ë¸®±â À§ÇØ »ç¿ëµÈ´Ù.
EROFS
µð·ºÅ丮°¡ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅÛÀ̱⠶§¹®¿¡ »õ·Î¿î ¸µÅ©¸¦ °®°í ÀÖ´Â µð·ºÅ丮·Î °»½ÅµÇ¾î Áú ¼ö ¾ø´Ù.
EXDEV
»õ·Î¿î À̸§À¸·Î ÁöÁ¤µÈ µð·ºÅ丮°¡ ¸µÅ©ÇÏ·Á´Â ÆÄÀϰú´Â ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡ Á¸ÀçÇÑ´Ù.
9.4 ½Éº¼¸¯ ¸µÅ©.
GNU ½Ã½ºÅÛ¿¡¼´Â ¼ÒÇÁÆ® ¸µÅ© ȤÀº ½Éº¼¸¯ ¸µÅ©¸¦ Áö¿øÇÑ´Ù. À̰ÍÀº ÀÏÁ¾ÀÇ "ÆÄÀÏ"·Î¼ º»ÁúÀû À¸·Î´Â ´Ù¸¥ ÆÄÀÏÀ̸§À» °¡¸®Å°´Â Æ÷ÀÎÅÍÀÌ´Ù. Çϵ帵ũ¿Í´Â ´Þ¸®, ½Éº¼¸¯ ¸µÅ©´Â µð·ºÅ丮³ª ¼·Î ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¾Æ¹«·± Á¦ÇѾøÀÌ ¸¸µé ¼ö ÀÖ´Ù. ´ç½ÅÀº ¶ÇÇÑ ¾ÆÁ÷ ¾î´À ÆÄÀÏÀÇ À̸§À¸·Î Á¸Àç ÇÏÁö ¾Ê´Â À̸§¿¡ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé ¼öµµ ÀÖ´Ù.( ÀÌ·± ¸µÅ©ÀÇ °³¹æÀº ±× À̸§ÀÇ ÆÄÀÏÀÌ ¸¸µé¾îÁú ¶§±îÁö ½ÇÆÐÇÒ °ÍÀÌ´Ù.). ¸¶Âù°¡Áö·Î, ¸¸ÀÏ ½Éº¼¸¯ ¸µÅ©°¡ ÇöÁ¸ÇÏ´Â ÆÄÀÏ¿¡¼ ¸¸µé¾îÁö°í ³ªÁß¿¡ ±× ÆÄÀÏÀÌ Áö¿öÁ³´Ù¸é, ½Éº¼¸¯ ¸µÅ©´Â ´õÀÌ»ó ±×ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ½¿¡µµ ºÒ±¸ÇÏ°í µ¿ÀÏÇÑ ÆÄÀÏÀ̸§À» °¡¸®Å°¸ç ³²¾ÆÀÖ´Ù.
½Éº¼¸¯ ¸µÅ©¶ó°í ºÒ¸®¿öÁö´Â ÀÌÀ¯´Â ´ç½ÅÀÌ ¸µÅ©¸¦ °³¹æÇÏ·Á ½ÃµµÇÒ ¶§ ±×µéÀÌ ÇàÇϴ Ưº°ÇÑ ÀÛ ¾÷¹æ¹ý ¶§¹®ÀÌ´Ù. openÇÔ¼ö´Â ´ç½ÅÀÌ ¸µÅ©ÀÇ ÁöÁ¤µÈ À̸§À» Àμö·Î Áشٸé, ±× ¸µÅ©¿¡ Æ÷ÇÔµÈ ÆÄÀÏ À̸§À» Àоî¼, ´ë½Å¿¡ ±× ÆÄÀÏ À̸§À» °³¹æÇÑ´Ù. statÇÔ¼ö´Â ¸¶Âù°¡Áö·Î, ¸µÅ©ÀÇ ±× ÀÚü ´ë½Å¿¡ ½É º¼¸¯ ¸µÅ©¿¡ ¿¬°áµÈ ±× ÆÄÀϻ󿡼 µ¿ÀÛÇÑ´Ù. linkÇÔ¼ö´Â ÇÏµå ¸µÅ©¸¦ ¸¸µç´Ù.
ÇÏÁö¸¸, ÆÄÀÏÀ» Áö¿ì°Å³ª, Àç¸í¸íÇϰųª ÇÏ´Â ¸í·ÉµéÀ» ¸µÅ© ±× Àڽſ¡¼ ÇàÇØÁø´Ù. readlink¿Í lstat ÇÔ¼ö´Â ¶ÇÇÑ ½Éº¼¸¯ ¸µÅ©¿¡¼ µ¿ÀÛÇϴµ¥, ¿Ö³ÄÇÏ¸é ±×µéÀÇ ¸ñÀûÀÌ ¸µÅ©¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò´Â°Í À̱⠶§¹®ÀÌ´Ù.
À̵é ÇÔ¼ö¸¦ À§ÇÑ ÇÁ·ÎÅäŸÀÔÀº 'uinstd.h'ÀÌ´Ù.
ÇÔ¼ö : int symlink (const char *oldname, const char *newname)
symlinkÇÔ¼ö´Â oldname¿¡ newnameÀ¸·Î À̸§µÈ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µç´Ù. symlink·ÎºÎÅÍ ¸®ÅϰªÀº º¸ Åë 0ÀÌ´Ù. ¸¸ÀÏ ¿¡·¯°¡ ¹ß»ýÇϸé -1À» ¸®ÅÏÇÑ´Ù. º¸Åë ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯¿¡ ´õÇÏ¿©¼( 6.2.3Àý [File Name Errors] 60 ÆäÀÌÁö ÂüÁ¶), ´ÙÀ½ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EEXIST
ÀÌ¹Ì newnameÀ̸§À» °¡Áø ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù.
EROFS
newname ÆÄÀÏÀÌ Àбâ-¸ðµå ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡ Á¸ÀçÇÒ °ÍÀÌ´Ù.
ENOSPC
µð·ºÅ丮³ª ÆÄÀÏ ½Ã½ºÅÛÀÌ »õ·Î¿î ¸µÅ©¸¦ ¸¸µéµµ·Ï È®ÀåµÇ¾îÁú ¼ö ¾ø´Ù.
EIO
µð½ºÅ©¿¡ µ¥ÀÌÅ͸¦ ¾²°Å³ª, Àд µ¿¾È Çϵå¿þ¾î ¿¡·¯°¡ ¹ß»ýÇß´Ù.
ÇÔ¼ö : int readlink (const char *filename, char *buffer, size_t size)
readlinkÇÔ¼ö´Â ½Éº¼¸¯ ¸µÅ© filenameÀÇ °ªÀ» ¾ò´Â´Ù. ¸µÅ©°¡ °¡¸®Å°´Â ÆÄÀÏ À̸§ÀÌ ¹öÆÛ¿¡ Ä«ÇÇµÈ ´Ù. ÀÌ ÆÄÀÏ À̸§ ¹®ÀÚ¿Àº ³Î Á¾·á¹®ÀÚ·Î ³¡³ªÁö ¾Ê´Â´Ù; readlink´Â º¸Åë Ä«ÇÇµÈ ¹®ÀÚµéÀÇ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù. sizeÀμö´Â Ä«ÇÇÇÒ ¹®ÀÚµéÀÇ ÃÖ´ë¼ö¸¦ ÀúÁ¤Çϰí, º¸Åë ¹öÆÛÀÇ ÇÒ´ç Å©±â°¡ µÈ´Ù.
¸¸ÀÏ ¸®ÅϰªÀÌ size¿Í °°´Ù¸é, ´ç½ÅÀº ±× ¹öÆÛ¿¡ ¿ÏÀüÇÑ À̸§ÀÌ ¸®ÅÏµÈ °ÍÀÎÁö, ¾Æ´ÑÁö¸¦ ¾Ë ¼ö°¡ ¾ø´Ù. ±×·¯¹Ç·Î ´Ù½Ã ¹öÆÛ¸¦ Å©°ÔÇϰí, readlink¸¦ ´Ù½Ã È£ÃâÇ϶ó. À̰÷¿¡ ±× ¿¹°¡ ÀÖ´Ù.
char *readlink_malloc (char *filename)
{
int size = 100;
while (1)
{
char *buffer = (char *) xmalloc (size);
int nchars = readlink (filename, buffer, size);
if (nchars < size)
return buffer;
free (buffer);
size *= 2;
}
}
-1ÀÇ °ªÀÌ ¸®ÅϵǾú´Ù¸é ¿¡·¯°¡ ¹ß»ýÇÑ °ÍÀÌ´Ù. º¸Åë ÆÄÀÏÀ̸§ ¹®¹ý¿¡·¯¿¡ ´ëÇÏ¿©( 6.2.3Àý [File Name Errors] 60ÆäÀÌÁö ÂüÁ¶) ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇÇÑ ¿¡·¯»óȲÀÌ´Ù.
EINVAL
ÁÖ¾îÁø filenameÀÌ ½Éº¼¸¯ ¸µÅ©°¡ ¾Æ´Ï´Ù.
EIO
µð½ºÅ©»ó¿¡¼ Àаųª, ¾²°í ÀÖ´Â µ¿¾È Çϵå¿þ¾î ¿¡·¯°¡ ¹ß»ýÇß´Ù.
9.5 ÆÄÀÏ Áö¿ì±â
´ç½ÅÀº unlink ³ª remove ÀÇ ÇÔ¼ö·Î ÆÄÀÏÀ» Áö¿ï ¼ö ÀÖ´Ù. ( À̵é À̸§µéÀº µ¿ÀǾîÀÌ´Ù.)
»èÁ¦(Deletion)´Â ½ÇÁ¦·Î ÆÄÀÏÀ̸§À» Áö¿î´Ù. ¸¸ÀÏ ±× À̸§ÀÌ ÆÄÀÏÀÇ À¯ÀÏÇÑ À̸§À̶ó¸é, ±× ÆÄÀÏÀº »èÁ¦µÈ´Ù. ÇÏÁö¸¸ ¸¸ÀÏ ±× ÆÄÀÏÀÌ ´Ù¸¥ À̸§À¸·Î Á¸ÀçÇϰí ÀÖ´Ù¸é( 9.3Àý [Hard Links], 127 ÆäÀÌÁö ÂüÁ¶), ±×°ÍÀº ´Ù¸¥ À̸§ ¾Æ·¡¼ ¾ï¼¼½º °¡´ÉÇÑ »óÅ·Π³²´Â´Ù.
ÇÔ¼ö : int unlink (const char *filename)
unlinkÇÔ¼ö´Â ÆÄÀÏÀ̸§ filenameÀ» Áö¿î´Ù. ¸¸ÀÏ ÀÌ ÆÄÀÏÀ̸§ÀÌ ±× ÆÄÀÏÀÇ À¯ÀÏÇÑ À̸§À̶ó¸é, ±× ÆÄÀÏ ÀÚü°¡ »èÁ¦µÈ´Ù. (½ÇÁ¦·Î´Â, ¸¸ÀÏ ¾î´À ÇÁ·Î¼¼½º°¡ ÀÌó·³ unlinkµÉ ¶§ ±× ÆÄÀÏÀ» °³¹æµÈ ÆÄÀÏ ·Î °®°í ÀÖ´Ù¸é, ¸ðµç ÇÁ·Î¼¼½ºµéÀÌ ±× ÆÄÀÏÀ» ´ÝÀ»¶§±îÁö »èÁ¦´Â ¿¬±âµÈ´Ù.)unlinkÇÔ¼ö´Â Çì´õÆÄÀÏ 'unistd.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â ¼º°øÇϸé 0À» ¸®ÅÏÇÏ°í ¿¡·¯À̸é -1À» ¸®ÅÏÇÑ´Ù. º¸ÅëÀÇ ÆÄ ÀÏÀ̸§ ¹®¹ý¿¡·¯¿¡ ´õÇÏ¿©¼( 6.2.3Àý [File Name errors] 60 ÆäÀÌÁö ÂüÁ¶) ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇÏ¿© Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EACCESS
ÆÄÀÏÀ» Á¦°ÅÇϱâ À§ÇÑ ¾²±â ¿äûÀÌ µð·ºÅ丮 ¿¡¼ °ÅºÎµÇ¾ú´Ù.
EBUSY
ÀÌ ¿¡·¯´Â ±× ÆÄÀÏÀÌ Á¦°ÅµÇ¾îÁú ¼ö ¾ø´Â, ½Ã½ºÅÛ¿¡¼ »ç¿ëÇϰí ÀÖ´Â ÆÄÀÏÀÓÀ» ³ªÅ¸³½´Ù. ´ç½ÅÀÌ ¾î µð¼°Ç ÀÌ ¿¡·¯¸¦ º¸¾Ò´Ù¸é ±×°ÍÀº ´ç½ÅÀÌ ÁöÁ¤ÇÑ ÆÄÀÏÀ̸§ÀÌ ·çÆ® µð·ºÅ丮 À̰ųª ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¼ ¸¶¿îÆ®Çϰí ÀÖ´Ù´Â °ÍÀÌ´Ù.
ENOENT
Á¦°ÅÇÏ·Á´Â ÆÄÀÏÀ̸§ÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
EPERM
¾î¶² ½Ã½ºÅÛ¿¡¼´Â, unlink´Â µð·ºÅ丮 Á¦°Å¿¡ »ç¿ëÇÒ ¼ö ¾ø°Å³ª, ¿ÀÁ÷ Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚ¸¸ÀÌ ÀÌ ¹æ¹ýÀ» »ç¿ëÇÒ¼ö Àְųª ÇÑ´Ù. ÀÌ¿Í °°Àº ¹®Á¦µéÀ» ÇÇÇϱâ À§Çؼ, µð·ºÅ丮¸¦ Áö¿ì·Á¸é rmdirÀ» »ç¿ëÇ϶ó.
EROFS
Áö¿ì·Á´Â ÆÄÀÏ À̸§ÀÇ µð·ºÅ丮°¡ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡ Á¸ÀçÇϰí Àֱ⠶§¹®¿¡ °»½ÅµÇ¾î Áú ¼ö ¾ø´Ù.
ÇÔ¼ö : int remove (const char *filename)
remove ÇÔ¼ö´Â unlinkÀÇ ´Ù¸¥ À̸§À¸·Î ANSI C ÀÌ´Ù. unlink´Â POSIX.1 À̸§ÀÌ´Ù. remove´Â 'stdio.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : int rmdir (const char *filename)
rmdirÀº µð·ºÅ丮¸¦ Áö¿î´Ù. µð·ºÅ丮¸¦ Á¦°ÅÇϱâ Àü¿¡´Â µð·ºÅ丮´Â ¹Ýµå½Ã ºñ¾îÀÖ¾î¾ß ÇÑ´Ù; Áï, ±× µð·ºÅ丮´Â `.' ¿Í `..' ÀÇ ¿£Æ®¸®¸¸ °®°í ÀÖ¾î¾ß ÇÑ´Ù.
rmdir Àº unlinkó·³ µ¿ÀÛÇÑ´Ù. ´ÙÀ½ÀÇ µÎ °³ÀÇ ºÎ°¡Àû errno´Â rmdirÀ» À§Çؼ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ ´Ù.
EEXIST
ENOTEMPTY
Áö¿ì·Á´Â µð·ºÅ丮°¡ ºñ¾îÀÖÁö ¾Ê´Ù.
ÀÌµé µÎ °³ÀÇ ¿¡·¯´Â µ¿ÀÏÇÏ´Ù; ¾î¶² ½Ã½ºÅÛ¿¡¼´Â ¾î¶² Çϳª¸¦ »ç¿ëÇϰí, ´Ù¸¥ ½Ã½ºÅÛ¿¡¼´Â ´Ù¸¥ Çϳª¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ À§ÇÑ ÇÁ·ÎÅäŸÀÔÀº Çì´õÆÄÀÏ 'uinstd.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
9.6 ÆÄÀÏ Àç¸í¸íÇϱâ.
renameÇÔ¼ö´Â ÆÄÀÏÀÇ À̸§À» º¯°æÇϴµ¥ »ç¿ëÇÑ´Ù.
ÇÔ¼ö : int rename (const char *oldname, const char *newname)
renameÇÔ¼ö´Â ÆÄÀÏ À̸§ oldnameÀ» newnameÀ¸·Î Àç¸í¸íÇÑ´Ù. oldname À̸§ÇÏ¿¡¼ÀÇ ÆÄÀÏ °Ë»ö Çü½ÄÀº ³ªÁß¿¡ newnameÀ¸·Î Àç¸í¸íµÇ´õ¶óµµ, ¿ª½Ã º¯ÇÔÀÌ ¾ø´Ù. (¸¸ÀÏ ±× ÆÄÀÏÀÌ oldname¿Ü¿¡ ´Ù¸¥ À̸§µéÀº °®¾ú´Ù¸é, ±×°ÍµéÀÇ À̸§¿¡µµ º¯ÇÔÀÌ ¾ø´Ù. ) newname À̸§ÀÇ ÆÄÀÏÀ» °®°í ÀÖ´Â µð·ºÅ丮 ´Â ±× ÆÄÀÏ( oldname À̸§ÀÇ ÆÄÀÏ )°ú °°Àº ÆÄÀÏ ½Ã½ºÅ۾ȿ¡ ÀÖ¾î¾ß¸¸ ÇÑ´Ù.
Àç¸í¸íÀÇ Æ¯º°ÇÑ °æ¿ì´Â µ¿ÀÏÇÑ ÆÄÀÏ¿¡ oldname°ú newname µÎ °³ÀÇ À̸§ÀÌ Á¸ÀçÇÒ ¶§ ÀÌ´Ù. ÀÌ °æ¿ì¿¡ ´ëÀÀÇϱâ À§ÇÑ ÀϰüµÈ ¹æ¹ýÀº oldnameÀ» Á¦°ÅÇÏ´Â °ÍÀÌ´Ù. ±×·¸Áö¸¸, POSIX´Â ÀÌ °æ¿ì¿¡ renameÀº ¾Æ¹«Àϵµ ÇÏÁö¾Ê°í, ÀÏÄ¡ÇÏ´Â ÆÄÀÏÀÌ ¾ø¾úÀ» ¶§, ¼º°øÇÏ°Ô µÈ´Ù. ¿ì¸®´Â ´ç½ÅÀÇ ¿î¿µÃ¼Á¦ °¡ ¹«¾ùÀ» ÇÒ°ÍÀÎÁö ¾ËÁö ¸øÇÑ´Ù. GNU½Ã½ºÅÛÀº ´ç½ÅÀÌ POSIX ½Ã½ºÅÛ°ú ȣȯ¼ºÀ» °¡Áöµµ·Ï, ¸í¹é ÇÏ°Ô ¿äûÇÏÁö ¾Ê´õ¶óµµ, ¿ÇÀºÀÏ( oldnameÀÇ Á¦°Å )À» ÇÒ °ÍÀÌ´Ù.
¸¸ÀÏ oldnameÀÌ µð·ºÅ丮°¡ ¾Æ´Ï¶ó¸é, ÀÌ¹Ì Á¸ÀçÇϰí ÀÖ´ø newnameÀÇ À̸§À» °¡Áø ÆÄÀÏÀº Àç¸í¸í ÀÇ µ¿ÀÛÀÌ ¼öÇàµÉ ¶§ Áö¿öÁø´Ù. ±×·¸Áö¸¸, ¸¸ÀÏ newnameÀÌ µð·ºÅ丮¶ó¸é, renameÀº ÀÌ °æ¿ì ½ÇÆÐ ·Î ³¡³´Ù. ¸¸ÀÏ oldnameÀÌ µð·ºÅ丮ÀÏ ¶§, newnameÀÇ À̸§À» °¡Áø ¾î¶²°Íµµ Á¸ÀçÇØ¼´Â ¾ÈµÇ°í, ¶Ç´Â ±×°ÍÀÌ ºñ¾îÀÖ´Â µð·ºÅ丮 À̸§À̰ųª ÇØ¾ßÇÑ´Ù. ÈÄÀÚÀÇ °æ¿ì¿¡, newnameÀÇ À̸§À» °¡Áø µð·º Å丮¸¦ ¿ì¼± Áö¿ì°í Àç¸í¸íÀ» ÇÏ´Â °ÍÀÌ´Ù. newnameÀº Àç¸í¸íÀ» ½ÃµµÇÒ µð·ºÅ丮·Î oldnameÀÇ
¼ºêµð·ºÅ丮¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Æ¾ß¸¸ ÇÑ´Ù.
renameÀº ±âÁ¸¿¡ oldnameÀ̶õ À̸§À» °®°í ÀÖ´Â ÆÄÀÏÀ» newnameÀ̶ó´Â »õ·Î¿î À̸§À¸·Î ÀÚµ¿Àû À¸·Î º¯°æÇÒ ¶§ ¾²¿©Áø´Ù. old¸¦ new·Î º¯°æÇÒ µ¿¾È "±× »çÀÌ¿¡" newnameÀÇ À̸§À» °¡Áø °ÍÀÌ Á¸ ÀçÇÏÁö ¾Ê´Â´Ù¸é ´õ ÀÌ»ó ½Å°æ¾µ°ÍÀÌ ¾Æ¹«°Íµµ ¾ø´Ù.
¸¸ÀÏ renameÀÌ ½ÇÆÐÇϸé, -1À» ¸®ÅÏÇÑ´Ù. ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯¿¡ ( 6.2.3Àý [File Name Errors], 60 ÆäÀÌÁö ÂüÁ¶) ´õÇÏ¿©, ´ÙÀ½ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EACCES
newnameÀ̳ª oldnameÀ» °®°í ÀÖ´Â µð·ºÅ丮µé ÁßÀÇ Çϳª°¡ ¾²±â ¿äûÀ» °ÅºÎÇß´Ù; ¶Ç´Â
newname°ú oldnameÀº µð·ºÅ丮Àε¥ ¾²±â ¿äûÀÌ ±×µéÁß¿¡ Çϳª¿¡¼ °ÅºÎµÇ¾îÁ³´Ù.
EBUSY
oldnameÀ̳ª newnameÀ̸§À» °¡Áø µð·ºÅ丮°¡ ½Ã½ºÅÛÀÌ ÀÛ¾÷ÇÏ´Â µ¿¾È Àç¸í¸íÀ» °ÅºÎÇÏ´Â ¹æ¹ý
À¸·Î ÇöÀç ±× µð·ºÅ丮¸¦ ½Ã½ºÅÛ¿¡¼ »ç¿ëÇϰí ÀÖ´Ù. µð·ºÅ丮°¡ ÆÄÀÏ ½Ã½ºÅÛÀ¸·Î ¸¶¿îÆ®(mount)
µÈ °ÍÀ̰í, µð·ºÅ丮°¡ ÇÁ·Î¼¼½ºµéÀÇ ÇöÀç ÀÛ¾÷ µð·ºÅ丮ÀÌ´Ù.
EEXIST
newname µð·ºÅ丮°¡ ºñ¾îÀÖÁö ¾Ê´Ù.
ENOTEMPTY
newname µð·ºÅ丮°¡ ºñ¾îÀÖÁö ¾Ê´Ù.
EINVAL
oldname µð·ºÅ丮°¡ newnameÀ» Æ÷ÇÔÇÏ´Â µð·ºÅ丮ÀÌ´Ù.
¿ªÀÚÁÖ : newnameÀÌ oldnameÀÇ ¼ºêµð·ºÅ丮.
EISDIR
newnameÀº µð·ºÅ丮 À̸§Àε¥, oldnameÀº µð·ºÅ丮 À̸§ÀÌ ¾Æ´Ï´Ù.
EMLINK
newnameÀÇ ºÎ¸ð µð·ºÅ丮°¡ ³Ê¹« ¸¹Àº ¸µÅ©µéÀ» °¡Áö°í ÀÖ´Ù. Àß ¸¸µé¾îÁø ÆÄÀÏ ½Ã½ºÅÛµéÀº °á ÄÚ ÀÌ ¿¡·¯¸¦ ¹ß»ý½ÃŰÁö ¾Ê´Â´Ù, ¿Ö³ÄÇÏ¸é ±×µéÀº ´ç½ÅÀÇ µð½ºÅ©°¡ Çã¿ëÇÏ´Â ÇÑ ¸¹Àº ¸µÅ©¸¦ Çã¿ë Çϱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ ´ç½ÅÀº ´Ù¸¥ ±â°è»óÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ» ³×Æ®¿÷À¸·Î ¾ï¼¼½º ÇÒ¼ö ÀÖÀ¸¹Ç·Î, ÀÌ ¿¡·¯¿¡ ´ëÇÑ °¡´É¼º¿¡ ´ëÇØ¼ Ç×»ó ´ëºñÇØ¾ß¸¸ ÇÑ´Ù.
ENOENT
oldname À̶õ À̸§À» °¡Áø ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
ENOSPC
newnameÀ» Æ÷ÇÔÇÒ µð·ºÅ丮°¡ ´õ ÀÌ»óÀÇ ¿£Æ®¸®¸¦ ¹Þ¾ÆµéÀÏ ¼ö ¾ø°í, ±×°÷¿¡´Â ÆÄÀÏ ½Ã½ºÅ۾ȿ¡ È®ÀåÇÒ °ø°¨ÀÌ ³²¾ÆÀÖÁö ¾Ê´Ù.
EROFS
¿ÀÁ÷ Àб⠸ðµåÀÎ ÆÄÀÏ ½Ã½ºÅÛ»óÀÇ µð·ºÅ丮¿¡ ¾²±â¸¦ ½ÃµµÇϰí ÀÖ´Ù.
EXDEV
oldname°ú newnameÀ̶ó´Â µÎ °³ÀÇ ÆÄÀÏ À̸§ÀÌ ¼·Î ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¸ÀçÇϰí ÀÖ´Ù.
9.7 µð·ºÅ丮 ¸¸µé±â
µð·ºÅ丮´Â mkdir ÇÔ¼ö·Î ¸¸µé¾îÁø´Ù. ( °°Àº ÀÏÀ» ÇÏ´Â mkdir À̶ó´Â ½© ¸í·É¾îµµ ÀÖ´Ù. )
ÇÔ¼ö : int mkdir (const char *filename, mode_t mode)
mkdir ÇÔ¼ö´Â filenameÀÇ À̸§À» °¡Áø »õ·Î¿î, ºó µð·ºÅ丮¸¦ ¸¸µç´Ù. mode Àμö´Â »õ·Î¿î µð·ºÅä ¸®¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑÀ» Á¤ÇÑ´Ù. 9.8.5Àý [Permission Bits] 136 ÆäÀÌÁö¸¦ ÂüÁ¶·Î ÇØ¼ Á¢±Ù ±ÇÇÑ¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾ò¾î¶ó.
¼öÇàÀÌ ¼º°øÀûÀ¸·Î ³¡³ª¸é 0ÀÇ °ªÀ» ¸®ÅÏÇϰí, ±×·¸Áö ¾ÊÀ» °æ¿ì¿¡´Â -1À» ¸®ÅÏÇÑ´Ù. º¸ÅëÀÇ ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯µé¿¡ ´õÇÏ¿©( 6.2.3 [File Name Errors], 60ÆäÀÌÁö ÂüÁ¶ ), ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ »óȲµéÀÌ´Ù.
EACCES
»õ·Î¿î µð·ºÅ丮¸¦ ´õÇÏ°ÔµÉ ºÎ¸ð µð·ºÅ丮¿¡¼ ÆÄÀÏ ¾²±â Çã¿ëÀÌ °ÅºÎµÇ¾ú´Ù.
EEXIST
filenameÀÇ À̸§À» °¡Áø ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÑ´Ù.
EMLINK
ºÎ¸ð µð·ºÅ丮°¡ ³Ê¹« ¸¹Àº ¸µÅ©µéÀº °¡Áö°í ÀÖ´Ù. Àß ¸¸µé¾îÁø ÆÄÀÏ ½Ã½ºÅÛ¿¡¼´Â ÀÌ·¯ÇÑ ¿¡·¯¸¦ °áÄÚ ¹ß»ý½ÃŰÁö ¾Ê´Â´Ù, ¿Ö³ÄÇϸé, ±×µéÀº ´ç½ÅÀÇ µð½ºÅ©°¡ ÀúÀåÇÒ ¼ö ÀÖ´Â ¸¸ÅÀÇ ¸µÅ©¸¦ Çã¿ëÇϱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ ´ç½ÅÀº ´Ù¸¥ ±â°è»ó¿¡ Á¸ÀçÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» ³×Æ®¿÷À» ÅëÇØ¼ ¾ï¼¼½ºÇÒ ¼ö ÀÖ À¸¹Ç·Î ÀÌ·¯ÇÑ ¿¡·¯°¡ ¹ß»ýµÉ °¡´É¼º¿¡ ´ëÇØ¼ Ç×»ó ´ëºñÇØ¾ß ÇÑ´Ù.
ENOSPC
ÆÄÀÏ ½Ã½ºÅÛÀÌ »õ·Î¿î µð·ºÅ丮¸¦ ¸¸µé¸¸ÇÑ ÃæºÐÇÑ °ø°£À» °¡Áö°í ÀÖÁö ¾Ê´Ù.
EROFS
µð·ºÅ丮ÀÇ ºÎ¸ð µð·ºÅ丮°¡ ¿ÀÁ÷ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡ Á¸ÀçÇϰí ÀÖ°í, ±×·¡¼ °»½ÅÇÒ ¼ö ¾ø ´Ù.
ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ·Á¸é, ´ç½ÅÀÇ ÇÁ·Î±×·¥¿¡ Çì´õÆÄÀÏ 'sys/stat.h'¸¦ Æ÷ÇÔ ÇØ¾ß ÇÑ´Ù.
9.8 ÆÄÀÏ ¼Ó¼ºµé.
ÇÑ ÆÄÀÏ¿¡ ½© ¸í·É¾î 'ls -l'À» »ç¿ëÇϸé, ´ç½ÅÀº ÆÄÀÏÀÇ Å©±â, ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ, ¸¶Áö¸· °»½ÅµÈ ¶§, µî µî¿¡ ´ëÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ Á¤º¸µéÀÇ Á¾·ù¸¦ ÆÄÀÏ ¼Ó¼ºÀ̶ó°í ºÎ¸¥´Ù; À̰ÍÀº ÆÄÀÏ ±× ÀÚü¿Í ¿¬°üµÇ¾î ÀÖ°í, ±× À̸§µéÀÇ Çϳª°¡ Ưº°ÇÑ °ÍÀº ¾Æ´Ï´Ù.
ÀÌÀý¿¡¼´Â ´ç½ÅÀÌ ¾î¶»°Ô ÆÄÀϵéÀÇ ¼Ó¼ºµé¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò°í, ±×µéÀ» °»½ÅÇÒ ¼ö ÀÖ´ÂÁö¸¦ ¼³¸í Çϰí ÀÖ´Ù.
9.8.1 ÆÄÀÏ ¼Ó¼ºµéÀÇ °ªÀÌ ¹«¾ùÀ» ÀǹÌÇϴ°¡.
´ç½ÅÀÌ ÆÄÀÏ ¼Ó¼ºÀ» ÀÐÀ» ¶§, ±×µéÀº struct stat¶ó°í ºÒ¸®´Â ±¸Á¶Ã¼·Î º¸³»Á®¿Â´Ù. ÀÌ ÀýÀº ±× ¼Ó ¼ºµéÀÇ À̸§°ú, ±×µéÀÇ µ¥ÀÌÅÍ Å¸ÀÔµé°ú, ±×µéÀÌ ¹«¾ùÀ» ÀǹÌÇϰí ÀÖ´ÂÁö¿¡ ´ëÇØ ¼³¸íÇϰí ÀÌ´Ù. ÆÄ ÀÏÀÇ ¼Ó¼ºÀ» Àбâ À§ÇÑ ÇÔ¼ö´Â, 9.8.2Àý [Reading Attributes] 133ÆäÀÌÁö¸¦ ÂüÁ¶Ç϶ó.
ÀÌÀý¿¡¼ Á¤ÀÇµÈ ¸ðµç ½Éº¼µéÀº Çì´õÆÄÀÏ 'sys/stat.h'¿¡ ÀÖ´Ù.
µ¥ÀÌÅÍŸÀÔ : struct stat
stat ±¸Á¶Ã¼ÇüÀº ÆÄÀÏÀÇ ¼Ó¼ºµé¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇϱâ À§ÇØ »ç¿ëµÇ¾îÁø´Ù. ±×µéÀº Àû¾îµµ ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù.
mode_t st_mode
ÆÄÀÏÀÇ ¸ðµå¸¦ Á¤ÇÑ´Ù. À̰ÍÀº ÆÄÀÏ Å¸ÀÔ Á¤º¸¿Í( 9.8.3 [Testing File Type], 134 ÆäÀÌÁö ÂüÁ¶) ÆÄ ÀÏ Á¢±Ù ±ÇÇÑ ºñÆ®¸¦(file permission) Æ÷ÇÔÇϰí ÀÖ´Ù.( 9.8.5Àý [Permission Bits] 136 ÆäÀÌÁö ÂüÁ¶)
ino_t st_ino
ÆÄÀÏ ÀÏ·Ã ¹øÈ£( file serial number),·Î¼ °°Àº µð¹ÙÀ̽º »ó¿¡¼ ¸ðµç ´Ù¸¥ ÆÄÀϵé°ú ÀÌ ÆÄÀÏÀ» ±¸ ºÐÇÑ´Ù.
dev_t st_dev
ÆÄÀÏÀ» Æ÷ÇÔÇϰí ÀÖ´Â µð¹ÙÀ̽º¸¦ ±â¼úÇÑ´Ù. st_ino¿Í st_dev, À̵ÑÀ» °¡Áö°í, ÆÄÀÏÀ» À¯ÀÏÇÏ°Ô ½Äº° ÇÑ´Ù.
nlink_t st_nlink
ÆÄÀÏ¿¡ °ü·ÃµÈ ÇÏµå ¸µÅ©ÀÇ °³¼öÀÌ´Ù. ÀÌ ÆÄÀÏÀ» ¿£Æ®¸®·Î °¡Áö°í ÀÖ´Â ¾ó¸¶³ª ¸¹Àº µð·ºÅ丮µéÀÌ ÀÖ´ÂÁö ÃßÀûÇØ¼ ±× °ªÀ» À¯ÁöÇÑ´Ù. ¸¸ÀÏ °³¼ö°¡ 0 À¸·Î °¨¼ÒÇϸé, ±× ÆÄÀÏ ÀÚü°¡ ¾ø¾îÁø °ÍÀÌ´Ù. ½Éº¼¸¯ ¸µÅ©µéÀº ÃÑ °³¼ö¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â´Ù.
uid_t st_uid
ÆÄÀÏ ¼ÒÀ¯ÀÚÀÇ À¯Àú ID ÀÌ´Ù. 9.8.4 Àý [File Owner] 135 ÆäÀÌÁö ÂüÁ¶.
gid_t st_gid
ÆÄÀÏÀÇ ±×·ì IDÀÌ´Ù. 9.8.4Àý [File Owner] 135 ÆäÀÌÁö ÂüÁ¶.
off_t st_size
À̰ÍÀº ¹ÙÀÌÆ®ÀÇ ¼ö·Î ÀϹÝÀû ÆÄÀÏÀÇ Å©±â¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸ÀÏ ÆÄÀϵéÀÌ µð¹ÙÀ̽º°Å³ª, ±×¿Í °°Àº ÆÄ ÀÏ·Î Á¸ÀçÇÑ´Ù¸é, ÀÌ Çʵå´Â º¸Åë ¾Æ¹«·± Àǹ̰¡ ¾ø´Ù.
time_t st_atime
À̰ÍÀº ÆÄÀÏÀÇ ÃÖÁ¾ ¾ï¼¼½º ½Ã°£ÀÌ´Ù. 9.8.9Àý [File Times] 140 ÆäÀÌÁö ÂüÁ¶.
unsigned long int st_atime_usec
À̰ÍÀº ÆÄÀÏÀÇ ÃÖÁ¾ ¾ï¼¼½º ½Ã°£ÀÇ ºÎ¼öÀûÀÎ ºÎºÐÀÌ´Ù. 9.8.9Àý [File Times] 140 ÆäÀÌÁöÂüÁ¶.
time_t st_mtime
À̰ÍÀº ÆÄÀÏÀÇ ³»¿ëÀÌ ¸¶Áö¸·À¸·Î °»½ÅµÈ ½Ã°£ À» ¸¸ÇÑ´Ù. 9.8.9Àý [File Times] 140ÆäÀÌÁö ÂüÁ¶.
unsigned long int st_mtime_usec
À̰ÍÀº ÆÄÀÏÀÌ ¸¶Áö¸·À¸·Î °»½ÅµÈ ½Ã°£ÀÇ ºÎ¼öÀûÀÎ ºÎºÐÀÌ´Ù. 9.8.9Àý [File Times] 140ÆäÀÌÁö Âü Á¶.
time_t st_ctime
À̰ÍÀº ÆÄÀÏÀÇ ¼Ó¼º ÀÚü°¡ ¸¶Áö¸·À¸·Î °»½ÅµÈ ½Ã°£À» ¸»ÇÑ´Ù. 9.8.9Àý [File Times] 140 ÆäÀÌÁö ÂüÁ¶.
unsigned long int st_ctime_usec
À̰ÍÀº ÆÄÀÏ ¼Ó¼ºÀÌ ¸¶Áö¸·À¸·Î °»½ÅµÈ ½Ã°£ÀÇ ºÎ¼öÀûÀÎ ºÎºÐÀÌ´Ù. 9.8.9Àý [File Times] 140ÆäÀÌ Áö ÂüÁ¶.
unsigned int st_nblocks
À̰ÍÀº 512-¹ÙÀÌÆ® ºí·ÏÀÇ ´ÜÀ§·Î °è»êµÈ, ÆÄÀÏÀÇ Á¡À¯Çϰí ÀÖ´Â µð½ºÅ© °ø°£ÀÇ ¾çÀ» ¸»ÇÑ´Ù. µð½º Å© ºí·ÏµéÀÇ °³¼ö´Â ÆÄÀÏÀÌ Å©±â¿Í ¿ÏÀüÈ÷ ºñ·ÊÇÏÁö ¾Ê´Â´Ù. µÎ°¡Áö ÀÌÀ¯·Î...; ÆÄÀÏ ½Ã½ºÅÛÀÌ ³»ºÎ Àû ·¹Äڵ带 °¡Áö°í ÀÖ±â À§Çؼ ¾î¶² ºí·ÏµéÀ» »ç¿ëÇÒ °ÍÀ̰í; ±×¸®°í ÆÄÀϵéÀº 0(zeros)°ú °°Àº " ±¸¸Ûµé"À» °¡Áö°í ÀÖÀ» °ÍÀ̱⠶§¹®ÀÌ´Ù.
ÇÑ ÆÄÀÏ¿¡¼ st_size¿Í ÀÌ °ªÀ» ºñ±³Çϸé (´ë·«) ÇÑ ÆÄÀÏÀÇ ³»¿ëÀÌ µå¹®µå¹®ÇÑÁö ¾Æ´ÑÁö ¾Ë ¼ö ÀÖ ´Ù. ÀÌó·³:
(st.st_blocks * 512 < st.st_size)
À̰á°ú´Â ¸ðµç ¿©±âÀú±â Èð¾îÁ® ÀÖ´Â °ÍµéÀÌ °ËÃâÀÌ µÇÁö ¾ÊÀ»¼ö µµ Àֱ⠶§¹®¿¡, ¿ÏÀüÇÑ °á°ú´Â ¾Æ ´Ï´Ù. ½Ç¿ëÀûÀÎ ¾îÇø®ÄÉÀ̼ǿ¡¼, À̰ÍÀº ¹®Á¦°¡ ¾Æ´Ï´Ù.
unsigned int st_blksize
¾²¿©Áø ÆÄÀÏÀ» Àбâ À§ÇÑ ÃÖÀûÀÇ ºí·Ï Å©±â¸¦ ¸»ÇÑ´Ù. ´ç½ÅÀº ¾²¿©Áø ÆÄÀÏÀ» Àбâ À§ÇÑ ¹öÆÛ °ø °£À» ÇÒ´çÇϱâ À§Çؼ ÀÌ Å©±â¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù.
¾î¶² ÆÄÀÏ ¼Ó¼ºµéÀº ±×µéÀ» À§ÇØ Æ¯º°È÷ Á¸ÀçÇϴ Ưº°ÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀÇ À̸§µéÀ» °¡Áö°í ÀÖ´Ù. ( ±×µéÀº ´ç½ÅÀÌ ÀÍÈ÷ ¾Ë°í ÀÖ´Â °ÍµéÀ» Á¤¼öÇüÀ¸·Î À̸§À» ºÙ¿©³õÀº °ÍÀÌ´Ù. ) À̵é typedef ½ÃŲ À̸§µéÀº 'sys/types.h'¿Í 'sys/stat.h'¿¡ Á¤ÀǵǾî ÀÖ´Ù. ¿©±â¿¡ ±×µé¿¡ ´ëÇÑ ¼³¸íÀÌ ÀÖ´Ù.
µ¥ÀÌÅÍŸÀÔ : mode__t
µ¥ÀÌÅÍŸÀÔ : mode__t
À̰ÍÀº ÇöÀçÀÇ ÆÄÀÏ ¸ðµåµéÀ» ³ªÅ¸³»±â À§ÇØ »ç¿ëµÇ´Â Á¤¼öÇü µ¥ÀÌÅÍ Å¸ÀÔ´Ï´Ù. GNU ½Ã½ºÅÛ¿¡ ¼, À̰ÍÀº unsigned int ¿Í µ¿ÀÏÇÏ´Ù.
µ¥ÀÌÅÍŸÀÔ : ino__t
À̰ÍÀº ÆÄÀÏÀÇ ÀÏ·Ã ¹øÈ£µéÀ» ³ªÅ¸³»±â À§ÇØ »ç¿ëÇÏ´Â »ê¼úÀû µ¥ÀÌÅÍ Å¸ÀÔÀÌ´Ù. (jargon À¯´Ð½º¿¡ ¼´Â, À̵éÀ» ¶§¶§·Î inode ¹øÈ£¶ó°í ºÒ¸®¿ö Áø´Ù. ) GNU ½Ã½ºÅÛ¿¡¼´Â, ÀÌ Å¸ÀÔÀº unsigned long int¿Í µ¿ÀÏÇÏ´Ù.
µ¥ÀÌÅÍŸÀÔ : dev__t
À̰ÍÀº ÆÄÀÏ µð¹ÙÀ̽º ¹øÈ£¸¦ ³ªÅ¸³»±â À§ÇØ »ç¿ëÇÏ´Â »ê¼úÀû µ¥ÀÌÅÍ Å¸ÀÔ´Ï´Ù. GNU ½Ã½ºÅÛ¿¡¼ ´Â, À̰ÍÀº int ¿Í µ¿ÀÏÇÏ´Ù.
µ¥ÀÌÅÍŸÀÔ : nlink__t
À̰ÍÀº ÆÄÀÏ ¸µÅ©ÀÇ °³¼ö¸¦ ³ªÅ¸³»±â À§ÇØ »ç¿ëµÇ´Â »ê¼úÀû µ¥ÀÌÅÍ Å¸ÀÔÀÔ´Ï´Ù. GNU ½Ã½ºÅÛ¿¡¼, À̰ÍÀº unsigned short int ¿Í µ¿ÀÏÇÏ´Ù.
9.8.2 ÆÄÀÏ ¼Ó¼ºµé Àбâ.
ÆÄÀÏÀÇ ¼Ó¼ºµéÀ» Á¶»çÇϱâ À§Çؼ´Â, stat, fstat ¿Í lstat ÇÔ¼ö¸¦ »ç¿ëÇ϶ó. ±×µéÀº struct stat object¿¡ ¼Ó¼ºÁ¤º¸¸¦ ¸®ÅÏÇÑ´Ù. ¼¼ °³ ÇÔ¼ö ¸ðµÎ´Â Çì´õÆÄÀÏ 'sys/stat.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : int stat (const char *filename, struct stat *buf)
stat ÇÔ¼ö´Â buf°¡ °¡¸®Å°´Â ±¸Á¶Ã¼¾È¿¡ filenameÀÇ À̸§À» °¡Áø ÆÄÀÏÀÇ ¼Ó¼º¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇÑ ´Ù. ¸¸ÀÏ filenameÀÌ ½Éº¼¸¯ ¸µÅ©ÀÇ À̸§À̶ó¸é, ´ç½ÅÀÌ ¾ò°ÔµÉ ¼Ó¼º Á¤º¸´Â ¸µÅ©°¡ °¡¸®Å°°í ÀÖ´Â ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸ÀÌ´Ù. ¸¸ÀÏ ¸µÅ©°¡ °¡¸®Å°°í ÀÖ´Â ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ̶ó¸é, stat´Â ½ÇÆÐÇÏ °Ô µÇ°í, Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ̶ó°í º¸°íÇÑ´Ù.
¸¸ÀÏ ¿ÀÆÛ·¹À̼ÇÀÌ ¼º°øÇϸé 0À» ¸®ÅÏÇϰí, ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ´Ù. ÆÄÀÏ ¹®¹ý ¿¡·¯µé¿¡ ´õÇÏ¿© (6.2.3Àý [File Name Errors] 60 ÆäÀÌÁö ÂüÁ¶), ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ ´Ù.
ENOENT
filenameÀÇ À̸§À» °¡Áø ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ½.
ÇÔ¼ö : int fstat (int filedes, struct stat *buf )
fstat ÇÔ¼ö´Â ÆÄÀÏ À̸§À» Àμö·Î ¹Þ¾ÆµéÀÌ´Â °Í ´ë½Å¿¡ °³¹æµÈ ÆÄÀÏ ±â¼úÀÚ¸¦ Àμö·Î ¹Þ¾ÆµéÀÌ´Â Á¡À» Á¦¿ÜÇϰí´Â stat¿Í °°´Ù. 8Àå [Low_Level I/O], 103 ÆäÀÌÁö ÂüÁ¶.
stató·³, fstatµµ ¼º°øÇϸé 0À» ¸®ÅÏÇϰí, ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ´Ù. ´ÙÀ½ÀÇ errno´Â ÇÔ¼ö fstat¸¦ À§ ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ´Ù.
EBADF
filedes Àμö°¡ À¯¿ëÇÑ ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Ï´Ù.
ÇÔ¼ö : int lstat (const char *filename, struct stat *buf )
lstat ÇÔ¼ö´Â ½Éº¼¸¯ ¸µÅ©¸¦ µû¸£Áö ¾Ê´Â´Ù´Â Á¡À» Á¦¿ÜÇϰí´Â stat¿Í °°´Ù. ¸¸ÀÏ filenameÀÌ ½Éº¼ ¸¯ ¸µÅ©ÀÇ À̸§À̶ó¸é, lstat´Â ¸µÅ© ±× ÀÚü¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù; ±×·¸Áö ¾Ê´Ù¸é lstat´Â stató ·³ µ¿ÀÛÇÑ´Ù. 9.4Àý [Symbolic Links] 127 ÆäÀÌÁö ÂüÁ¶.
9.8.3 ÆÄÀÏÀÇ Çü½Ä ¾Ë¾Æº¸±â
ÆÄÀÏ ¼Ó¼ºÀÇ st_mode Çʵå¾È¿¡ ÀúÀåµÈ ÆÄÀÏ ¸ðµå´Â µÎ°¡Áö Á¤º¸¸¦ ´ã°í ÀÖ´Ù: Çϳª´Â ÆÄÀÏ Å¸ÀÔ ÄÚµåÀ̰í, ´Ù¸¥ Çϳª´Â Á¢±Ù Çã°¡ ºñÆ®µéÀÌ´Ù. ÀÌ ÀýÀº ±× ÆÄÀÏÀÌ µð·ºÅ丮ÀÎÁö, ¾Æ´Ï¸é ¼ÒÄÏÀÎÁö, µî µîÀ» ¾Ë¼ö ÀÖ´Â ÆÄÀÏ Å¸ÀÔ Äڵ忡 ´ëÇÑ °ÍÀ» ¼³¸íÇÒ °ÍÀÌ´Ù. ÆÄÀÏ Á¢±Ù ±ÇÇÑ¿¡ ´ëÇÑ Á¤º¸´Â, 9.8.5 Àý [Permission Bits] 136 ÆäÀÌÁö ÂüÁ¶.
ÆÄÀÏ ¸ðµå¿¡¼ ÆÄÀÏ Å¸ÀÔ ºÎºÐÀ» °Ë»öÇÒ ¼ö ÀÖ´Â ¹Ì¸® Á¤ÀÇµÈ µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ±×Áß ÇѰ¡Áö´Â, ÆÄÀÏ ¸ðµå °ªÀ» ½ÃÇèÇÏ´Â ¸ÅÅ©·Î¸¦ »ç¿ëÇØ¼ ÆÄÀÏÀÌ ±× ŸÀÔÀÎÁö, ¾Æ´ÑÁö¸¦ Âü°ú °ÅÁþÀ¸·Î ¸®ÅÏÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù. µÑ°·Î, ÆÄÀÏ ¸ðµå¿¡¼ ´Ù¸¥ °ªµéÀ» Á¦¿ÜÇϰí( mask outÀ» ½ÃÄѼ ) ¿ÀÁ÷ ÆÄÀÏ Å¸ÀÔ Äڵ常À» ¾ò¾î³»´Â ¹æ¹ýÀÌ´Ù. ´ç½ÅÀº ÀÌ °ªÀ» ¿©·¯ °¡Áö ´Ù¾çÇÑ »ó¼öµé°ú ºñ±³ÇÒ ¼ö ÀÖ´Ù.
ÀÌ Àý¿¡¼ ¼³¸íµÈ ¸ðµç ½Éº¼µéÀº Çì´õÆÄÀÏ 'sys/stat.h'¿¡ Á¤ÀǵǾî ÀÖ´Ù.
´ÙÀ½Àº ÆÄÀÏ Å¸ÀÔÀ» Å×½ºÆ® ÇϱâÀ§ÇÑ ¸ÅÅ©·Î·Î½á, ÁÖ¾îÁø mÀº stat ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ st_mode ÇʵåÀÌ´Ù.
int S__ISDIR (mode_t m) Macro
ÀÌ ¸ÅÅ©·Î´Â ¸¸ÀÏ ±× ÆÄÀÏÀÌ µð·ºÅ丮¶ó¸é 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇÑ´Ù.
int S__ISCHR (mode_t m) Macro
ÀÌ ¸ÅÅ©·Î´Â ¸¸ÀÏ ±× ÆÄÀÏÀÌ ¹®ÀÚ Æ¯¼öÈÀÏ( Å͹̳ΰú °°Àº µð¹ÙÀ̽º )À̸é 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇÑ ´Ù.
int S__ISBLK (mode_t m) Macro
ÀÌ ¸ÅÅ©·Î´Â ¸¸ÀÏ ±× ÆÄÀÏÀÌ ºí·Ï Ư¼ö ÆÄÀÏ ( µð½ºÅ©¿Í °°Àº µð¹ÙÀ̽º )À̸é 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇÑ ´Ù.
int S__ISREG (mode_t m) Macro
ÀÌ ¸ÅÅ©·Î´Â ¸¸ÀÏ ±× ÆÄÀÏÀÌ º¸ÅëÀÇ ÆÄÀÏÀ̶ó¸é 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇÑ´Ù.
int S__ISFIFO (mode_t m) Macro
ÀÌ ¸ÅÅ©·Î´Â ¸¸ÀÏ ±× ÆÄÀÏÀÌ FIFO Ư¼ö ÆÄÀÏÀ̳ª, pipe¶ó¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù. 10Àå [Pipes and FIFOs] , 145 ÆäÀÌÁö ÂüÁ¶.
int S__ISLNK (mode_t m) Macro
ÀÌ ¸ÅÅ©·Î´Â ¸¸ÀÏ ÆÄÀÏÀÌ ½Éº¼¸¯ ¸µÅ©¶ó¸é 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇÑ´Ù. 9.4Àý [Symbolic Links] 127 Æä ÀÌÁö ÂüÁ¶.
int S__ISSOCK (mode_t m) Macro
ÀÌ ¸ÅÅ©·Î´Â ¸¸ÀÏ ±× ÆÄÀÏÀÌ ¼ÒÄÏÀ̶ó¸é 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇÑ´Ù. 11Àå [Sockets] 149 ÆäÀÌÁö ÂüÁ¶.
ÆÄÀÏ Å¸ÀÔÀ» Å×½ºÆ®ÇÏ´Â ºñ-POSIXÀÇ ¹æ¹ýÀº BSD¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ Áö¿øµÈ´Ù. ±× ¸ðµå´Â ÆÄÀÏ Å¸ÀÔ Äڵ带 ÃßÃâÇϱâ À§ÇØ S_IFMT¿Í ºñÆ®´ÜÀ§ AND¿¬»êÀ» ½Ã۰í, Àû´çÇÑ Å¸ÀÔ ÄÚµå »ó¼ö¿Í ºñ±³ ÇÑ´Ù.
¿¹¸¦ µé¾î,
S_ISCHR (mode) ´Â ´ÙÀ½°ú µ¿µîÇÏ´Ù:
((mode & S_IFMT) == S-IFCHR)
int S__IFMT Macro
À̰ÍÀº mode °ª¿¡¼ ÆÄÀÏ Å¸ÀÔ ÄÚµåÀÇ ºÎºÐÀ» ÃßÃâÇϱâ À§Çؼ »ç¿ëµÇ´Â ºñÆ® ¸¶½ºÅ©ÀÌ´Ù. À̵é Àº ´Ù¸¥ ÆÄÀÏ Å¸ÀÔ ÄÚµåµéÀ» À§Çؼ ½Éº¼ÈµÈ À̸§À» °¡Áö°í ÀÖ´Ù.
S_IFDIR
ÀÌ ¸ÅÅ©·Î´Â µð·ºÅ丮 ÆÄÀÏÀ» À§ÇÑ ÆÄÀÏ Å¸ÀÔ ÄÚµåÀÇ °ªÀ» ³ªÅ¸³½´Ù.
S_IFCHR
ÀÌ ¸ÅÅ©·Î´Â ¹®ÀÚ-ÁöÇâ(character-oriented) µð¹ÙÀ̽º ÆÄÀÏÀ» À§ÇÑ ÆÄÀÏ Å¸ÀÔ ÄÚµåÀÇ °ªÀ» ³ªÅ¸³½´Ù.
S_IFBLK
ÀÌ ¸ÅÅ©·Î´Â ºí·Ï-ÁöÇâ(block-oriented) µð¹ÙÀ̽º ÆÄÀÏÀ» À§ÇÑ ÆÄÀÏ Å¸ÀÔ ÄÚµåÀÇ °ªÀ» ³ªÅ¸³½´Ù.
S_IFREG
ÀÌ ¸ÅÅ©·Î´Â º¸ÅëÀÇ ÆÄÀÏÀ» À§ÇÑ ÆÄÀÏ Å¸ÀÔ ÄÚµåÀÇ °ªÀ» ³ªÅ¸³½´Ù.
S_IFLNK
ÀÌ ¸ÅÅ©·Î´Â ½Éº¼¸¯ ¸µÅ©¸¦ À§ÇÑ ÆÄÀÏ Å¸ÀÔ ÄÚµåÀÇ °ªÀ» ³ªÅ¸³½´Ù.
S_IFSOCK
ÀÌ ¸ÅÅ©·Î´Â ¼ÒÄÏÀ» À§ÇÑ ÆÄÀÏ Å¸ÀÔ ÄÚµåÀÇ °ªÀ» ³ªÅ¸³½´Ù.
S_IFIFO
ÀÌ ¸ÅÅ©·Î´Â FIFO ³ª pipe¸¦ À§ÇÑ ÆÄÀÏ Å¸ÀÔ ÄÚµåÀÇ °ªÀ» ³ªÅ¸³½´Ù.
9.8.4 ÆÄÀÏ ¼ÒÀ¯ÀÚ.
¸ðµç ÆÄÀÏÀº ½Ã½ºÅÛ»ó¿¡ µî·ÏµÈ »ç¿ëÀÚ À̸§µéÁß ÇϳªÀÎ ¼ÒÀ¯ÀÚ¸¦ °®°í ÀÖ´Ù. °¢ ÆÄÀÏÀº ¶ÇÇÑ Á¤ ÀÇµÈ ±×·ìµéÁß ÇϳªÀÎ ±×·ìÀ» °®°í ÀÖ´Ù. ÆÄÀÏ ¼ÒÀ¯ÀÚ´Â ´©°¡ ±× ÆÄÀÏÀ» ÆíÁýÇß´ÂÁö( Ưº°È÷ ´ç½ÅÀÌ GNU Emacs·Î ÆíÁýÀ» ÇÒ ¶§ ) ¾Ë±âÀ§Çؼµµ ÇÊ¿äÇÏÁö¸¸, ±×°ÍÀÇ ÁÖµÈ ¸ñÀûÀº Á¢±Ù ±ÇÇÑÀ» Á¦¾îÇϱâ À§ÇÔÀÌ´Ù.
ÆÄÀÏ ¼ÒÀ¯ÀÚ¿Í ±×·ìÀº, ±× ÆÄÀÏÀÌ, ÆÄÀÏ ¼ÒÀ¯ÀÚÀÎ »ç¿ëÀÚ¸¦ À§ÇÑ Á¢±Ù ±ÇÇÑ ¼³Á¤, ±×¸®°í ÆÄÀÏÀÇ ±× ·ì¿¡ ¼ÓÇÑ »ç¿ëÀڵ鿡 Àû¿ë½Ã۱â À§ÇÑ ´Ù¸¥ ¼³Á¤, ±×¸®°í ¸ðµç ´Ù¸¥ »ç¶÷µé¿¡°Ô Àû¿ëÇϱâ À§ÇÑ ¼¼ ¹øÂ° ºñÆ® ¼³Á¤À» °¡Áö°í Àֱ⠶§¹®¿¡, Á¢±ÙÀ» °áÁ¤ÇÏ´Â ±ÔÄ¢¿¡ µû¸¥´Ù. 9.8.6Àý [Access Permission] 137 ÆäÀÌÁö¸¦ ÂüÁ¶Çϸé, ÀÌ µ¥ÀÌÅ͸¦ ±âÃÊ·Î ÇØ¼ ¾î¶»°Ô Á¢±ÙÀ» °áÁ¤ÇÏ´ÂÁö¿¡ ´ëÇÑ »ó¼¼ÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
ÆÄÀÏÀÌ ¸¸µé¾îÁú ¶§, ±× ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ´Â ±× ÆÄÀÏÀ» ¸¸µç ÇÁ·Î¼¼½ºÀÇ »ç¿ëÀÚ ID¸¦ ÅëÇØ ¼³Á¤µÈ´Ù( 25.2Àý [Process personal], 353 ÆäÀÌÁö ÂüÁ¶). ÆÄÀÏÀÇ ±×·ì ID´Â ±× ÇÁ·Î¼¼½ºÀÇ ±×·ì ID·Î ¼³Á¤µÇ°Å ³ª, ¾Æ´Ï¸é ±× ÆÄÀÏÀÌ Æ÷ÇÔµÈ µð·ºÅ丮ÀÇ ±×·ì ID·Î ¼³Á¤µÇ°Å³ª Çϴµ¥, ±×°ÍÀº ±× ÆÄÀÏÀÌ ÀúÀåµÈ ½Ã½ºÅÛ¿¡ µû¶ó ´Ù¸£´Ù. ´ç½ÅÀÌ ¿ø°Ý ÆÄÀÏ ½Ã½ºÅÛÀ» ¾ï¼¼½ºÇÒ ¶§, ´ç½ÅÀÇ ÇÁ·Î±×·¥ÀÌ ±¸µ¿µÇ°í ÀÖ´Â ½Ã½ºÅÛ¿¡ µû¸£´Â °ÍÀÌ ¾Æ´Ï¶ó ±×ÆÄÀÏ ÀÚ½ÅÀÌ ¼ÓÇÑ ½Ã½ºÅÛÀÇ ±ÔÄ¢¿¡ µû¶ó ÇൿÇÑ´Ù. ±×·¡¼ ´ç½ÅÀÇ ÇÁ·Î±×·¥Àº, ´ç½ÅÀÌ ¾î¶² ½Ã½ºÅÛ¿¡¼ ±× ÇÁ·Î±×·¥À» ±¸µ¿½ÃŰ´ÂÁö¿¡ »ó°ü¾øÀÌ, ´ç½ÅÀÌ ºÎµúÄ¥Áöµµ ¸ð ¸£´Â ¸ðµç µ¿ÀÛ¿¡ Á¾·ù¿¡ ´ëÇØ ¹Ì¸® ´ëºñÇØ¾ß¸¸ ÇÑ´Ù.
´ç½ÅÀº chown ÇÔ¼ö¸¦ »ç¿ëÇØ¼ ÇöÁ¸ÇÏ´Â ÆÄÀÏÀÇ »ç¿ëÀÚ ¿Í/¶Ç´Â ±×·ì »ç¿ëÀÚ¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº chown°ú chgrp ½© ¸í·É¾î¿¡ ±âº»ÀûÀ¸·Î Æ÷ÇԵǾî ÀÖ´Ù.
ÀÌ ÇÔ¼ö¸¦ À§ÇÑ ÇÁ·ÎÅäŸÀÔÀº 'unistd.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : int chown (const char *filename, uid_t owner, gid_t group)
chownÇÔ¼ö´Â owner·Î filenameÀÇ À̸§À» °¡Áø ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¸¦ º¯°æÇϰí, groupÀ¸·Î ±×·ì ¼ÒÀ¯ÀÚ ¸¦ º¯°æÇÑ´Ù. ¾î¶² ½Ã½ºÅÛ»ó¿¡¼ ÆÄÀÏ ¼ÒÀ¯ÀÚÀÇ º¯°æÀº ÆÄÀÏ Á¢±Ù ±ÇÇÑ ºñÆ®µé¿¡¼ set-user-ID ¿Í set-group-ID ºñÆ®¸¦ Ŭ¸®¾îÇÑ´Ù(À̰ÍÀº ÀÌ ºñÆ®µéÀÌ »õ·Î¿î ¼ÒÀ¯ÀÚ¿¡°Ô Àû´çÇÏÁö ¾ÊÀ»Áöµµ ¸ð¸£±â ¶§¹®ÀÌ´Ù. ). ´Ù¸¥ ÆÄÀÏ Á¢±Ù ±ÇÇÑ ºñÆ®µéÀº º¯°æµÇÁö ¾Ê´Â´Ù.
¼º°øÇÏ¸é ¸®ÅϰªÀº 0À̰í, ½ÇÆÐÇϸé -1ÀÌ´Ù. º¸ÅëÀÇ ÆÄÀÏ ¹®¹ý ¿¡·¯¿¡ ´õÇÏ¿©( 6.2.3Àý [File Name Errors] 60 ÆäÀÌÁö ÂüÁ¶), ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EPERM
ÀÌ ÇÁ·Î¼¼½º´Â ¿äûµÈ º¯°æÀ» ¼öÇàÇϱ⿡´Â Á¢±Ù±ÇÇÑÀÌ ºÎÁ·ÇÏ´Ù.
¿ÀÁ÷ Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚ³ª, ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¸¸ÀÌ ±× ÆÄÀÏÀÇ ±×·ìÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ´ëºÎºÐÀÇ ÆÄ ÀÏ ½Ã½ºÅÛµéÀº, ¿ÀÁ÷ Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚ¸¸ÀÌ ±× ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù; ¾î¶² ÆÄÀÏ ½Ã ½ºÅÛµéÀº ¸¸ÀÏ ´ç½ÅÀÌ ÇöÀç ±×ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¶ó¸é, ±× ¼ÒÀ¯ÀÚ¸¦ º¯°æÇÒ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù. ´ç½ÅÀÌ ¿ø°Ý ÆÄÀÏ ½Ã½ºÅÛÀ» ¾ï¼¼½º ÇÒ ¶§, ´ç½ÅÀÇ ÇÁ·Î±×·¥ÀÌ ±¸µ¿µÇ°í ÀÖ´Â ½Ã½ºÅÛ¿¡ ÀÇÇØ¼°¡ ¾Æ´Ï¶ó, ±× ÆÄÀÏÀ» ½ÇÁ¦·Î °®°í ÀÖ´Â ½Ã½ºÅÛ¿¡ ÀÇÇØ¼ µ¿ÀÛÀÌ °áÁ¤µÇ¾î Áø´Ù.
27.7Àý [Options for Files] 375 ÆäÀÌÁö¸¦ ÂüÁ¶·Î-POSIX_CHOWN_RESTRICTED ¸ÅÅ©·Î¿¡´ëÇÑ Á¤º¸ ¸¦ ¾ò¾î¶ó.
EROFS
ÆÄÀÏÀÌ ¿ÀÁ÷ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¸ÀçÇÑ´Ù.
ÇÔ¼ö : int fchown (int filedes, int owner, int group)
À̰ÍÀº °³¹æµÈ ÆÄÀÏ ±â¼úÀÚ filedesÀÇ ÆÄÀÏ ¼ÒÀ¯ÀÚ¸¦ º¯°æÇÑ´Ù´Â Á¡À» Á¦¿ÜÇϰí´Â chown ÇÔ¼ö¿Í °° ´Ù. ¼º°øÇϸé 0À» ¸®ÅÏÇÏ°í ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ ÄÚµåµéÀÌ´Ù.
EBADF
filedes Àμö°¡ À¯¿ëÇÑ ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Ï´Ù.
EINVAL
filedes Àμö°¡ º¸ÅëÀÇ ÆÄÀÏÀÌ ¾Æ´Ñ, pipe ³ª ¼ÒÄÏ¿¡ ÇØ´çÇÑ´Ù.
EPERM
ÀÌ ÇÁ·Î¼¼½º´Â ¿äûµÈ º¯°æÀ» ¼öÇàÇϱâ À§ÇÑ ÆÄÀÏ Á¢±Ù Çã°¡°¡ ºÎÁ·ÇÏ´Ù. Á»´õ »ó¼¼ÇÑ °ÍÀº À§ÀÇ chmod¸¦ ÂüÁ¶Ç϶ó.
EROFS
ÆÄÀÏÀÌ ¿ÀÁ÷ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡ Á¸ÀçÇϰí ÀÖ´Ù.
9.8.5 ÆÄÀÏ Á¢±Ù Çã°¡ ºñÆ®µé.
ÆÄÀÏ ¼Ó¼ºÀÇ st_mode Çʵ忡 ÀúÀåµÇ¾î ÀÖ´Â ÆÄÀÏ ¸ðµå´Â µÎ°¡ÁöÀÇ Á¤º¸¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù: ÆÄÀÏ Å¸ÀÔ ÄÚµå¿Í ÆÄÀÏ Á¢±Ù Çã°¡ ºñÆ®µé. ÀÌÀý¿¡¼´Â ¿ÀÁ÷, ÆÄÀÏÀ» ´©°¡ Àаųª ¾µ ¼ö Àִ°¡¸¦ Á¦¾îÇÏ ´Â, ÆÄÀÏ Á¢±Ù Çã°¡ ºñÆ®¿¡ ´ëÇØ¼ ´Ù·ê°ÍÀÌ´Ù.
ÀÌÀý¿¡¼ ¼³¸íÇϰí ÀÖ´Â ½Éº¼µéÀº Çì´õÆÄÀÏ 'sys/stat.h'¿¡ Á¤ÀǵǾî ÀÖ´Ù.
ÀÌµé ½Éº¼µéÀº ÆÄÀÏ Á¢±Ù Çϰ¡¸¦ Á¦¾îÇÏ´Â ÆÄÀÏ ¸ðµå ºñÆ®µéÀ» À§ÇØ Á¤ÀǵǾîÁ³´Ù.
S_IRUSR
S_IREAD
ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¸¦ À§ÇÑ Àбâ Çã°¡ ºñÆ®. ¸¹Àº ½Ã½ºÅ۵鿡¼, ÀÌ ºñÆ®´Â 0400ÀÌ´Ù. S_IREAD´Â BSD ¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ Á¦°øµÇ°í ÀÖ´Â Àß ¾È¾²ÀÌ´Â µ¿ÀǾîÀÌ´Ù.
S_IWUSR
S_IWRITE
ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¸¦ À§ÇÑ ¾²±â Çã°¡ ºñÆ®. º¸Åë 0200.
S_IWRITE´Â BSD¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ Á¦°øµÇ°í ÀÖ´Â Àß ¾È¾²ÀÌ´Â µ¿ÀǾîÀÌ´Ù.
S_IXUSR
S_IEXEC
ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¸¦ À§ÇÑ ½ÇÇà( º¸ÅëÀÇ ÆÄÀÏ ) À̳ª °Ë»ö( µð·ºÅ丮À» À§ÇÑ ) Çã°¡ ºñÆ®ÀÌ´Ù. º¸Åë 0100.
S_IEXEC´Â BSD¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ Á¦°øµÇ°í ÀÖ´Â Àß ¾È¾²ÀÌ´Â µ¿ÀǾîÀÌ´Ù.
S_IRWXU
À̰ÍÀº '(S_IRUSR | S_IWUSR | S_IXUSR)'°ú °°´Ù.
S_IRGRP
ÆÄÀÏÀÇ ±×·ì ¼ÒÀ¯ÀÚ¸¦ À§ÇÑ Àбâ Çã°¡ ºñÆ®. º¸Åë 040
S_IWGRP
ÆÄÀÏÀÇ ±×·ì ¼ÒÀ¯ÀÚ¸¦ À§ÇÑ ¾²±â Çã°¡ ºñÆ®. º¸Åë 020.
S_IXGRP
ÆÄÀÏÀÇ ±×·ì ¼ÒÀ¯ÀÚ¸¦ À§ÇÑ ½ÇÇàÀ̳ª °Ë»ö Çã°¡ ºñÆ®. º¸Åë 010.
S_IRWXG
À̰ÍÀº '(S_IRGRP | S_IWGRP | S_IXGRP)'¿Í °°´Ù.
S_IROTH
´Ù¸¥ »ç¿ëÀÚ¸¦ À§ÇÑ Àбâ Çã°¡ ºñÆ®. º¸Åë 04.
S_IWOTH
´Ù¸¥ »ç¿ëÀÚ¸¦ À§ÇÑ ¾²±â Çã°¡ ºñÆ®. º¸Åë 02.
S_IXOTH
´Ù¸¥ »ç¿ëÀÚ¸¦ À§ÇÑ ½ÇÇàÀ̳ª °Ë»ö Çã°¡ ºñÆ®. º¸Åë 01.
S_IRWXO
À̰ÍÀº '(S_IROTH | S_IWOTH | S_IXOTH)'¿Í °°´Ù.
S_ISUID
À̰ÍÀº ½ÇÇà ºñÆ®¿¡¼ set-user-ID·Î, º¸Åë 04000. 25.4Àý [How Change Persona], 354 ÆäÀÌÁö Âü Á¶. ¿ªÀÚÁÖ: set-user-ID ; ¼öÇàÁßÀÇ »ç¿ëÀÚ ½Äº°¹øÈ£¸¦ ÁöÁ¤.
S_ISGID
À̰ÍÀº ½ÇÇàºñÆ®¿¡¼ set-group-ID·Î, º¸Åë 02000ÀÌ´Ù. 25.4Àý [How Change Persona], 354 ÆäÀÌÁö ÂüÁ¶. ¿ªÀÚÁÖ: set-user-ID ; ¼öÇàÁßÀÇ ±×·ì½Äº°¹øÈ£¸¦ ÁöÁ¤.
S_ISVTX
À̰ÍÀº ½ºÆ¼Å° ºñÆ®·Î º¸Åë 01000ÀÌ´Ù.
¿ªÀÚÁÖ: sticky bit ; ¼öÇàÁßÀÇ ÅØ½ºÆ® À̹ÌÁö¸¦ ÀúÀå.
¼öÇàÁßÀÎ ÆÄÀÏ¿¡¼, ½Ã½ºÅÛÀÇ ½º¿ÍÇÎ ¹æ¹ýµéÀ» º¯°æÇÑ´Ù. º¸ÅëÀº ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ ¶§, ±â¾ïÀåÄ¡¾È ÀÇ ±× ÆäÀÌÁöµéÀº Áï½Ã ÇØÁ¦µÇ¾î Àç»ç¿ë°¡´ÉÇØÁø´Ù. ±×·¯³ª ¸¸ÀÏ ¼öÇà°¡´ÉÇÑ ÆÄÀÏ¿¡¼ ½ºÆ¼Å°ºñÆ®°¡ ¼³Á¤µÇ¸é, ±× ½Ã½ºÅÛÀº ¸¶Ä¡ ±× ÇÁ·Î±×·¥ÀÌ ¿©ÀüÈ÷ ½ÇÇàµÇ°í Àִ°Íó·³ ±â¾ïÀå¼Ò¿¡ ÆäÀÌÁöµéÀ» °è ¼Ó À¯ÁöÇϰí ÀÖ´Ù. À̰ÍÀº ¿ÏÀüÇÑ ¼öÇà¿¡ ¸¹Àº ½Ã°£ÀÌ ¼Ò¿äµÉ °Í °°Àº ÇÁ·Î±×·¥¿¡ À¯¿ëÇÏ´Ù. µð·ºÅä ¸®¿¡¼, ½ºÆ¼Å°ºñÆ®´Â ¸¸ÀÏ ´ç½ÅÀÌ ¾î´À ÆÄÀÏ¿¡ ¾²±âÇã°¡¸¦ °¡Áö°í ÀÖ´Ù¸é µð·ºÅ丮¾ÈÀÇ ±× ÆÄÀÏÀ» Á¦°Å Çϵµ·Ï Çã¿ëÇÑ´Ù. º¸Åë »ç¿ëÀÚ´Â µð·ºÅ丮¾ÈÀÇ ¸ðµç ÆÄÀϵéÀ» Áö¿ï¼ö Àְųª, ȤÀº ±×µéÁß ¾î´À °Íµµ Áö¿ï ¼ö ¾ø°Å³ªÇÑ´Ù ( ±× »ç¿ëÀÚ°¡ µð·ºÅ丮¿¡ ¾²±â Çã°¡¸¦ °®°í ÀÖ´ÂÁö, ¾ø´ÂÁö¿¡ ±âÃÊÇÑ´Ù. ). ½ºÆ¼Å°ºñÆ®´Â °³°³ÀÇ ÆÄÀϵéÀÇ Á¦°Å ±ÇÇÑÀ» Á¦¾îÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ¸¸µç´Ù.
¿ªÀÚÁÖ: ¿©±â¼ ÆäÀÌÁö´Â ±â¾ïÀåÄ¡¿¡ ÀúÀåµÈ ÇϳªÀÇ ´ÜÀ§¶ó°í º¼ ¼ö Àְڳ׿ä.
½Éº¼µéÀÇ ½ÇÇà ºñÆ® °ªµéÀº À§ÀÇ Å×ÀÌºí¿¡ ÀÖ´Ù. ´ç½ÅÀº ´ç½ÅÀÇ ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ ¶§ ÆÄÀÏ ¸ð µå °ªµéÀº ÇØ¼®ÇÒ ¼ö ÀÖ´Ù. ÀÌµé ºñÆ®°ªµéÀº ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡ Á¤È®ÇÏ°Ô µ¿ÀÛÇÏÁö¸¸, ±×°ÍÀ» ¿ÏÀü È÷ º¸ÀåÇÒ ¼ö´Â¾ø´Ù.
ÁÖÀÇ: ÆÄÀÏ Á¢±Ù ±ÇÇÑÀ» ¼ýÀÚ·Î ¸í½ÃÇÏ´Â °ÍÀº ÁÁÁö¾ÊÀº ½À°üÀÌ´Ù.
À̰ÍÀº À̽ļºÀÌ ¾ø°í, ¶ÇÇÑ ´©±º°¡ ´ç½ÅÀÇ ÇÁ·Î±×·¥À» ÀÐÀ» ¶§, ±× ºñÆ®°¡ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö ¾Ë¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ÇÁ·Î±×·¥À» ±âÈ£(symbolic)À̸§µéÀ» »ç¿ëÇÏ¿©, ±ú²ýÇÏ°Ô ¸¸µé¾î¶ó.
9.8.6 ¾î¶»°Ô ÆÄÀÏ¿¡ ´ç½ÅÀÇ Á¢±ÙÀ» °áÁ¤Çϴ°¡.
¿î¿µÃ¼Á¦´Â º¸Åë À¯È¿ »ç¿ëÀÚ¿Í ÇÁ·Î¼¼½ºÀÇ ±×·ì IDµé°ú, ±×°ÍÀ» º¸ÃæÇÏ¿© ±×·ì IDµé°ú ÆÄÀÏÀÇ ¼Ò À¯ÀÚ, ±×·ì ±×¸®°í Çã°¡ºñÆ®µéÀ» ±âÃÊ·Î ÇÏ¿©ÆÄÀÏ¿¡ ´ëÇÑ Á¢±Ù Çϰ¡¸¦ °áÁ¤ÇÑ´Ù. ÀÌ ¿øÄ¢µéÀº 25.2 Àý [Process Persona] 353 ÆäÀÌÁö¿¡ ÀÚ¼¼È÷ ³ª¿ÍÀÖ´Ù.
¿ªÀÚÁÖ: À¯È¿»ç¿ëÀÚID: ½ÇÁ¦ »ý¼ºµÈ ÆÄÀÏ¿¡ ´ëÇÑ ¼ÒÀ¯±ÇÀ» °®´Â »ç¿ëÀÚ ½ÇÁ¦»ç¿ëÀÚID: ÇÁ·Î¼¼½º¸¦ ¼öÇà½ÃŲ »ç¿ëÀÚÀÇ ½Äº°¹øÈ£
¸¸ÀÏ ÇÁ·Î¼¼½ºÀÇ À¯È¿ »ç¿ëÀÚ ID°¡ ÆÄÀÏÀÇ ¼ÒÀ¯ »ç¿ëÀÚ ID¿Í ´ëÀÀµÆÀ» ¶§, Àбâ, ¾²±â¿Í ½ÇÇà/°Ë»ö Çã°¡´Â ÇØ´çµÇ´Â "»ç¿ëÀÚ" (¶Ç´Â "¼ÒÀ¯ÀÚ") ºñÆ®¿¡ ÀÇÇØ Á¦¾îµÈ´Ù. ±×¿Í°°ÀÌ, ¸¸ÀÏ À¯È¿ ±×·ì ID ³ª ÇÁ·Î¼¼½ºÀÇ ±×·ì ID°¡ ÆÄÀÏÀÇ ±×·ì ¼ÒÀ¯ÀÚ ID¿Í ´ëÀÀµÆÀ»¶§, ÆÄÀÏ Á¢±Ù Çã°¡´Â "±×·ì" ºñÆ®µé¿¡ ÀÇ ÇØ Á¦¾îµÈ´Ù. ±×·¸Áö ¾Ê´Ù¸é, ÆÄÀÏ Á¢±Ù Çã°¡´Â "´Ù¸¥»ç¿ëÀÚ" ºñÆ®µé¿¡ ÀÇÇØ Á¦¾îµÈ´Ù.
'·çÆ®'ó·³ Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚ´Â ÆÄÀÏ Á¢±Ù Çã°¡¿¡ °ü°è¾øÀÌ ¾î´À ÆÄÀÏÀÌ¶óµµ ¾ï¼¼½º ÇÒ ¼ö ÀÖ ´Ù. Ưº°ÇÑ °æ¿ì·Î, Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚ¸¦ À§ÇÑ ½ÇÇà°¡´É ÆÄÀÏÀ» À§Çؼ, Àû¾îµµ ÇϳªÀÇ ½ÇÇà ºñ Æ®µéÀ» ¼³Á¤Çؾ߸¸ ÇÑ´Ù.
9.8.7 ÆÄÀÏ Á¢±Ù Çã°¡ Á¤Çϱâ.
ÆÄÀÏÀ» ¸¸µå´Â ¿ø·¡ÀÇ ÇÔ¼öµé( ¿¹¸¦ µé¾î, openÀ̳ª mkdir)Àº »õ·ÎÀÌ ¸¸µé¾îÁú ÆÄÀÏÀÇ Á¢±Ù Çã°¡¸¦ Á¤Çϱâ À§Çؼ modeÀμö¸¦ ÃëÇÑ´Ù. ±×·¯³ª Á¤ÇØÁø ¸ðµå´Â ±×°ÍÀÌ »ç¿ëµÇ±â Àü¿¡, ÇÁ·Î¼¼½ºÀÇ ÆÄÀÏ»ý ¼º¸¶½ºÅ©³ª umask¿¡ ÀÇÇØ °»½ÅµÇ¾îÁø´Ù.
ÆÄÀÏ »ý¼º ¸¶½ºÅ©¿¡ ¼³Á¤µÇ¾îÁø ºñÆ®µéÀº »õ·ÎÀÌ °³¹æµÈ ÆÄÀÏ¿¡ ´ëÇÑ ,±× ¼³Á¤¿¡ ÇØ´çÇÏ´Â ±ÇÇÑÀÌ ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¿¹¸¦ µé¾î, ¸¸ÀÏ ´ç½ÅÀÌ "´Ù¸¥ »ç¿ëÀÚ" Á¢±Ù ±ÇÇÑ ºñÆ®µéÀ» ¸ðµÎ ¸¶½ºÅ©¿¡ ¼³Á¤Çϸé, »õ·ÎÀÌ »ý¼ºµÈ ÆÄÀÏ¿¡, "´Ù¸¥ »ç¿ëÀÚ" ¹üÁÖ¿¡ µé¾î°¡´Â ¸ðµç ÇÁ·Î¼¼½ºµéÀÇ Á¢±ÙÀÌ ºÒ°¡µÈ ´Ù, ½ÉÁö¾î °³¹æµÈ ÆÄÀÏ¿¡ ÁÖ¾îÁø mode Àμö°¡ Á¢±Ù°¡´ÉÀ̾ú´Ù°í ÇÏ´õ¶óµµ. Áï, ÆÄÀÏ »ý¼º ¸¶½ºÅ©´Â ´ç½ÅÀÌ ¿øÇÏ´Â ¸¸Å ÆÄÀÏ Á¢±Ù Çã°¡¸¦ ºÎ¿©ÇϱⰡ ¿ëÀÌÇÏ´Ù.
ÇÁ·Î±×·¥µéÀº Ưº°ÇÑ ÆÄÀÏ¿¡ ÀûÁ¤ÇÑ ¸ðµç Çã°¡¸¦ Æ÷ÇÔÇϰí ÀÖ´Â mode Àμö¸¦ ÁöÁ¤Çؼ ÆÄÀÏÀ» °³ ¹æÇÑ´Ù. º¸ÅëÀÇ ÆÄÀÏÀº, ¸ðµç ºÎ·ùÀÇ »ç¿ëÀڵ鿡°Ô Àбâ¿Í ¾²±âÇã°¡°¡ ÀÖ´Ù. À̵é Çã°¡µéÀ» °³º°Àû À¸·Î »ç¿ëÀÚ ÀÚ½ÅÀÇ ÆÄÀÏ »ý¼º ¸¶½ºÅ©¸¦ ÅëÇØ¼ Á¦ÇÑÇÏ´Â °ÍÀÌ´Ù.
À̸§ÀÌ ÀÖ´Â ÇöÁ¸ÇÏ´Â ÆÄÀÏÀÇ Çã°¡¸¦ º¯°æÇϱâ À§Çؼ´Â, chmod¸¦ È£ÃâÇ϶ó. ÀÌ ÇÔ¼ö´Â ÆÄÀÏ »ý¼º ¸¶½ºÅ©¸¦ ¹«½ÃÇÑ´Ù; ±×°ÍÀº Á¤È®È÷ Á¤ÇØÁø Çã°¡ ºñÆ®µéÀ» »ç¿ëÇÑ´Ù. º¸Åë, ÆÄÀÏ »ý¼º ¸¶½ºÅ©´Â »ç ¿ëÀÚÀÇ ·Î±×ÀÎ ½©¿¡¼ ÃʱâȵÇÀÖ°í (umask ½© ¸í·É¾î¸¦ »ç¿ëÇØ¼ ) , ±×¸®°í ¸ðµç ºÎÇÁ·Î¼¼½ºµéÀÌ ¹°·Á¹Þ´Â´Ù. ÀÀ¿ë ÇÁ·Î±×·¥µéÀº º¸Åë ÆÄÀÏ »ý¼º ¸¶½ºÅ©¿¡ ´ëÇØ¼ °ÆÁ¤ÇÒ Çʿ䰡 ¾ø´Ù. ±×°ÍÀº ¹Ì¸® °¡Á¤µÈ °ÍÀ» ÇÒ °ÍÀÌ´Ù. ´ç½ÅÀÌ ÆÄÀÏÀ» °³¹æÇϰí, ÆÄÀÏ Á¢±Ù Çã°¡¸¦ À§Çؼ umask¸¦ »ç¿ëÇÒ ¶§, umask¸¦ »ç¿ëÇÏ´Â °Í º¸´Ù´Â, ÆÄÀÏÀ» °³¹æÇÑ ÈÄ¿¡ fchmod¸¦ »ç¿ëÇÏ¿© ±× ÀÏÀ» ÇÏ´Â °ÍÀÌ °¡Àå ½¬ ¿î ¹æ¹ýÀÌ´Ù.
½ÇÁ¦·Î, umask¸¦ ÅëÇÑ º¯°æÀº ¿ÀÁ÷ ½©¿¡ ÀÇÇØ¼ ÇàÇØÁø´Ù. ±×µéÀº umaskÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.
ÀÌÀýÀÇ ÇÔ¼öµéÀº Çì´õÆÄÀÏ "sys/stat.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : mode_t umask (mode_t mask)
umask ÇÔ¼ö´Â mask·Î ÇöÀç ÇÁ·Î¼¼½ºÀÇ ÆÄÀÏ »ý¼º ¸¶½ºÅ©¸¦ ¼³Á¤Çϰí, ÆÄÀÏ »ý¼º ¸¶½ºÅ©ÀÇ ÀüÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù. À̰÷¿¡¼´Â ±× °ªµéÀ» º¯°æÇÏÁö ¾Ê°í, umask¸¦ »ç¿ëÇØ¼ ¸¶½ºÅ©¸¦ ¾î¶»°Ô ÀдÂÁö¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.
mode_t
read_umask (void)
{
mask = umask (0);
umask (mask);
}
±×·¸Áö¸¸, ¸¸ÀÏ ´ç½ÅÀÌ ¸¶½ºÅ©°ªÀ» ´ÜÁö Àб⸦ ¿øÇÑ´Ù¸é getumask¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ³´´Ù, ¿Ö³ÄÇÏ ¸é ÀçÁøÀÔ ¶§¹®ÀÌ´Ù. (Àû¾îµµ ¸¸ÀÏ ´ç½ÅÀÌ GNU ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇϰí ÀÖ´Ù¸é )
ÇÔ¼ö : mode_t getumask (void)
ÇöÀçÀÇ ÇÁ·Î¼¼½º¸¦ À§ÇÑ ÆÄÀÏ »ý¼º ¸¶½ºÅ©ÀÇ ÇöÀçÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â GNUÈ®ÀåÀÌ´Ù.
ÇÔ¼ö : int chmod (const char *filename, mode_t mode)
chmod ÇÔ¼ö´Â mode·Î filenameÀÇ À̸§À» °¡Áø ÆÄÀÏÀ» À§ÇÑ Á¢±Ù Çã°¡ºñÆ®¸¦ ¼³Á¤ÇÑ´Ù. ¸¸ÀÏ ±× filenameÀÇ ÆÄÀÏÀÌ ½Éº¼¸¯ ¸µÅ©¶ó¸é, chmod´Â ¸µÅ© ±× ÀÚü°¡ ¾Æ´Ï¶ó, ¸µÅ©°¡ °¡¸®Å°°í ÀÖ´Â ÆÄÀÏÀÇ Á¢±Ù Çã°¡¸¦ º¯°æÇÑ´Ù. ¸µÅ©ÀÇ ¸ðµå¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¾Æ¹«°Íµµ ¾ø´Ù. ¼º°øÇϸé 0À», ½ÇÆÐÇÏ ¸é -1À» ¸®ÅÏÇÑ´Ù. º¸ÅëÀÇ ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯¿¡ ´õÇÏ¿© ( 6.2.3Àý [File Name Errors] 60 ÆäÀÌÁö ÂüÁ¶), ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¿¡¼ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
ENOENT
±× À̸§À» °¡Áø ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
EPERM
ÀÌ ÇÁ·Î¼¼½º°¡ ÀÌ ÆÄÀÏÀÇ Á¢±Ù Çã°¡¸¦ º¯°æÇÒ ¸¸ÅÀÇ ±ÇÇÑÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù. ¿ÀÁ÷ ÆÄÀÏÀÇ ¼Ò À¯ÀÚ( ÇÁ·Î¼¼½ºÀÇ À¯È¿ »ç¿ëÀÚ ID·Î ÆÇ´ÜµÈ)³ª Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚ¸¸ ±×µéÀ» º¯°æÇÒ ¼ö ÀÖ´Ù.
EROFS
ÆÄÀÏÀÌ ¿ÀÁ÷ Àб⠸ðµåÀÇ ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¸ÀçÇÑ´Ù.
ÇÔ¼ö : int fchmod (int filedes, int mode)
À̰ÍÀº ±â¼úÀÚ filedes¸¦ °ÅÃļ ÇöÀç °³¹æµÈ ÆÄÀÏÀÇ Á¢±Ù Çã°¡¸¦ º¯°æÇÑ´Ù´ÂÁ¡À» Á¦¿ÜÇϰí´Â chmod¿Í °°´Ù. fchmod·ÎºÎÅÍÀÇ ¸®ÅϰªÀº ¼º°øÇϸé 0À̰í, ½ÇÆÐÇϸé -1ÀÌ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ ¼ö¸¦ À§ÇØ Á¤ÀÇÇÑ»óȲÀÌ´Ù.
EBADF
filedes Àμö°¡ À¯¿ëÇÑ ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Ï´Ù.
EINVAL
filedes Àμö°¡ ÆÄÀÌÇÁ³ª ¼ÒÄÏÀ̰ųª, ¾Æ´Ï¸é ±×°ÍÀÌ ½ÇÁ¦·Î Á¢±Ù Çã°¡¸¦ °¡ÁöÁö ¾Ê´Â ¾î¶²°Í¿¡ ÇØ ´çÇÑ´Ù.
EPERM
ÀÌ ÇÁ·Î¼¼½º°¡ ÆÄÀÏÀÇ Á¢±Ù Çã°¡¸¦ º¯°æÇϱâÀ§ÇÑ Çã°¡¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù. ¿ÀÁ÷ ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ( ÇÁ·Î¼¼½ºÀÇ À¯È¿ »ç¿ëÀÚ ID·Î ÆÇ´ÜµÈ)³ª, Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚ¸¸ÀÌ ±×µéÀ» º¯°æÇÒ ¼öÀÖ´Ù.
EROFS
ÆÄÀÏÀÌ ¿ÀÁ÷ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅ۾ȿ¡ Á¸ÀçÇÑ´Ù. 9.8.8 ÆÄÀÏÀ» ¾ï¼¼½ºÇϱâ À§ÇÏ¿© ÆÄÀÏ Á¢±Ù Çã °¡¸¦ ¾Ë¾Æº¸±â. Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀڷνá ÇÁ·Î±×·¥À» ½ÇÇàÇϰí ÀÖÀ» ¶§, ±× »ç¿ëÀÚ¿¡°Ô Á¦ÇѾøÀÌ ÆÄÀϵéÀ» ¾ï¼¼½º Çϵµ·Ï Çã¿ëÇÑ´Ù_¿¹¸¦ µé¾î, '/etc/passwd/'ÆÄÀÏÀ» ¼öÁ¤Çϱâ¿Í °°Àº°Íµµ. À¯È¿ »ç ¿ëÀÚ ID·Î Ç×»ó ·çÆ®¿¡¼ ½ÇÇàµÇµµ·Ï setuid ºñÆ®¸¦ »ç¿ëÇÏ´Â ±×·± ÆÄÀϵéÀÌ ¾Æ´Ï¶ó¸é, ÇÁ·Î±×·¥µé Àº º¸ÅëÀÇ »ç¿ëÀÚ¿¡ÀÇÇØ ½ÇÇàµÇµµ·Ï ¸¸µé¾îÁ³´Ù. Á¤ÇØÁø »ç¿ëÀÚ¿¡ ÀÇÇÏ¿© ÆÄÀÏÀ» ¾ï¼¼½ºÇÏ´Â ÇÁ·Î ±×·¥¿¡¼, ÆÄÀϵéÀÌ ¸í¹éÇÑ »ç¿ëÀÚ¿¡ ÀÇÇØ ¾ï¼¼½ºµÇ¾îÁø´Ù. ·çÆ®·Î ½ÇÇàµÇ´Â ÇÁ·Î±×·¥¿¡¼´Â Á¤ÇØÁø »ç¿ëÀÚ°¡ ¹«½¼ ÆÄÀÏÀ̵çÁö ¾ï¼¼½º°¡ Çã°¡µÇÁö¸¸, º¸ÅëÀº º¸ÅëÀÇ »ç¿ëÀÚ°¡ °Ë»öÇÒ ¼ö ÀÖ´Â ±×·± ÆÄÀÏ µé¸¸ Çã°¡µÈ´Ù. ÇÁ·Î±×·¥Àº ±× ÆÄÀÏÀ» Àаųª ¾²±âÀü¿¡, »ç¿ëÀÚ°¡ ÆÄÀÏÀ» ¾ï¼¼½ºÇÒ Çʿ䰡 ÀÖ´ÂÁö¸¦ ¸í¹éÇÏ°Ô Ã¼Å©ÇØ¾ß¸¸ ÇÑ´Ù.
À̰ÍÀ» Çϱâ À§Çؼ, À¯È¿ »ç¿ëÀÚ ID º¸´Ù´Â ÇÁ·Î¼¼½ºÀÇ ½Ç »ç¿ëÀÚ ID¿¡ ÀÇÇÑ Á¢±Ù Çã°¡¸¦ üũÇÏ ´Â accessÇÔ¼ö¸¦ »ç¿ëÇ϶ó. ( setuid´Â ±× ÇÁ·Î±×·¥À» ½ÇÁ¦·Î ½ÇÇà½ÃŲ »ç¿ëÀÚ¸¦ ¹Ý¿µÇÑ, ½Ç »ç¿ëÀÚ ID¸¦ º¯°æÇÏÁö ¾Ê´Â´Ù.) ¼³¸íÇϱâ´Â ½±Áö¸¸, »ç¿ëÇϱâ´Â ¾î·Á¿î ¿¢¼¼½º¸¦ üũÇÒ ¼ö ÀÖ´Â ´Ù¸¥¹æ¹ýÀÌ ÀÖ´Ù. À̰ÍÀº ÆÄÀÏ ¸ðµå ºñÆ®µéÀ» ½ÃÇèÇÏ°í ½Ã½ºÅÛÀÇ ¿¢¼¼½ºÁ¶ÀÛÀ» Èä³»³»´Â °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀº ¸¹ Àº ½Ã½ºÅÛµéÀÌ ºÎ°¡ÀûÀÎ ¾ï¼¼½º Á¦¾î¸¦ °¡Áö°í Àֱ⠶§¹®¿¡ ¹Ù¶÷Á÷ÇÑ ¹æ¹ýÀº ¾Æ´Ï´Ù; ´ç½ÅÀÇ ÇÁ·Î ±×·¥ÀÌ À̽ļºÀÖ°Ô ±×µéÀ» Èä³»³¾¼öµµ ¾ø°í, ´Ù¸¥ ½Ã½ºÅÛµéÀÌ °¡Áø ´Ù¸¥ Á¾·ùÀÇ¿¢¼¼½º Á¦¾î¸¦ ¾Ë¾Æ ³»·Á ½ÃµµÇÒ ¼öµµ ¾ø´Ù. access¸¦ »ç¿ëÇÏ´Â °ÍÀº °£´ÜÇϰí, ´ç½ÅÀÌ »ç¿ëÇÏ´Â ½Ã½ºÅÛÀÌ ¹«¾ùÀ̵çÁö°£ ¿¡ ±× ½Ã½ºÅÛ¿¡ Àû´çÇÑ µ¿ÀÛÀ» ÀÚµ¿ÀûÀ¸·Î ÇÑ´Ù.
ÀÌ Àý¿¡¼ ¼³¸íµÈ ½Éº¼µéÀº 'uinstd.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : int access (const char *filename, int how )
access ÇÔ¼ö´Â howÀμö·Î Á¤ÇØÁø ¹æ¹ýÀ¸·Î filenameÀÇ À̸§À» °¡Áø ÆÄÀÏÀ» ¾ï¼¼½º ÇÒ¼ö ÀÖ´ÂÁö¸¦ ¾Ë¾Æº¸´Â ÇÔ¼öÀÌ´Ù. how Àμö´Â R_OK, W_OK, X_OK,Ç÷¡±×¸¦ ºñÆ®´ÜÀ§ OR¿¬»êµÈ°ÍÀ̰ųª Á¸Àç Å×½ºÆ® F_OK Ç÷¡±×ÀÌ´Ù. ÀÌ ÇÔ¼ö´Â Á¢±Ù Çã°¡¸¦ üũÇϱâ À§Çؼ À¯È¿»ç¿ëÀÚ ID¸¦ »ç¿ëÇϱ⠺¸ ´Ù´Â È£ÃâÇÏ´Â ÇÁ·Î¼¼½ºÀÇ ½Ç »ç¿ëÀÚ¿Í ±×·ì IDµéÀ» »ç¿ëÇÑ´Ù. ±× °á°ú·Î, ¸¸ÀÏ ´ç½ÅÀÌ setuid³ª setgid ÇÁ·Î±×·¥( 25.4Àý [How Change Persona] 354 ÆäÀÌÁö ÂüÁ¶)À¸·ÎºÎÅÍ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù¸é, ±×°Í Àº ±× ÇÁ·Î±×·¥À» ½ÇÁ¦·Î±¸µ¿ÇÏ´Â »ç¿ëÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ ¾Ë·ÁÁØ´Ù.
¾ï¼¼½º°¡ Çã°¡µÇ¸é 0À» ¸®ÅÏÇϰí, ±×·¸Áö ¾ÊÀ¸¸é -1À» ¸®ÅÏÇÑ´Ù.
(Áï, ÇϳªÀÇ ÇÔ¼ö·Î Ãë±ÞÇÏ¿©, access´Â ¿äûµÈ Á¢±ÙÀÌ °ÅºÎµÇ¸é ÂüÀ» ¸®ÅÏÇÑ´Ù. ) º¸ÅëÀÇ ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯¿¡ ´õÇÏ¿© ( 6.2.3Àý [File Name Errors] 60 ÆäÀÌÁö ÂüÁ¶), ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EACCES
howÀμö·Î Á¤ÇØÁø Á¢±ÙÀÌ °ÅºÎµÇ¾ú´Ù.
ENOENT
ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
EROFS
¾²±â Çã°¡°¡ ¿ÀÁ÷ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡ Á¸ÀçÇÏ´Â ÆÄÀÏ¿¡ ¿äûµÇ¾ú´Ù.
ÀÌµé ¸ÅÅ©·ÎµéÀº access ÇÔ¼ö¿¡ howÀμö·Î¼ »ç¿ëÇϱâ À§ÇÑ °ÍÀ¸·Î Çì´õÆÄÀÏ 'unistd.h'¿¡ Á¤ÀÇµÇ ¾î ÀÖ´Ù.
¸ÅÅ©·Î : int R__OK
Àбâ Çã°¡¸¦ À§ÇÑ Å×½ºÆ®¸¦ ÀǹÌÇÏ´Â Àμö.
¸ÅÅ©·Î : int W__OK
¾²±â Çã°¡¸¦ À§ÇÑ Å×½ºÆ®¸¦ ÀǹÌÇÏ´Â Àμö
¸ÅÅ©·Î : int X__OK
½ÇÇà/°Ë»ö Çã°¡¸¦ À§ÇÑ Å×½ºÆ®¸¦ ÀǹÌÇÏ´Â Àμö.
¸ÅÅ©·Î : int F__OK
ÆÄÀÏÀÇ Á¸À縦 À§ÇÑ Å×½ºÆ®¸¦ ÀǹÌÇÏ´Â ÇÔ¼ö.
9.8.9 ÆÄÀÏ¿¡ °ü·ÃµÈ ½Ã°£µé.
°¢ ÆÄÀÏÀº °Ë»ö ½Ã°£, °»½Å ½Ã°£, ¼Ó¼º °»½Å ½Ã°£¿¡ ÇØ´çÇÏ´Â ¼¼°¡Áö ŸÀÓ ½ºÅÛÇÁµéÀ» °¡Áö°í ÀÖ´Ù. À̰ÍÀº statÀÇ st_atime, st_mtime, st_ctime ¸â¹ö¿¡ ÇØ´çÇÑ´Ù; 9.8Àý [File Attributes], 131 ÆäÀÌÁö ÂüÁ¶. ÀÌ ½Ã°£µé ¸ðµÎ´Â time_t objects ¾È¿¡ Ç¥ÇöµÈ´Ù. ÀÌ µ¥ÀÌÅÍ Å¸ÀÔÀº 'time.h'¿¡ Á¤ÀǵǾî ÀÖ´Ù. ½Ã°£ °ªµéÀÇ Ç¥Çö°ú ´Ù·ç´Â ¹æº¡¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº 17.2Àý [Calendar Time] 235 ÆäÀÌÁö¿¡ ÀÖ´Ù. ÇöÁ¸ÇÏ´Â ÆÄÀÏÀÌ °³¹æµÇÀÖÀ» ¶§, ±× ¼Ó¼ºº¯°æ½Ã°£°ú °»½Å ½Ã°£ÇʵåµéÀº °»½ÅµÈ ´Ù. ÆÄÀÏÀбâ´Â °Ë»ö ½Ã°£ ¼Ó¼ºÀ» °»½Å½Ã۰í, ÆÄÀϾ²±âµµ ¶ÇÇÑ, °»½Å½Ã°£ ¼Ó¼ºÀ» °»½Å½ÃŲ´Ù.
ÆÄÀÏÀÌ ¸¸µé¾îÁú ¶§, ÆÄÀÏÀ» À§ÇÑ ¼¼°¡Áö ŸÀÓ ½ºÅÛÇÁ´Â ÇöÀçÀÇ ½Ã°£À¸·Î ¼³Á¤µÈ´Ù. µð·ºÅ丮ÀÇ ¼Ó ¼º º¯°æ ½Ã°£°ú °»½Å ½Ã°£ÀÇ ÇʵåµéÀº »õ·Î¿î ¿£Æ®¸®°¡ µé¾î¿À¸é °»½ÅµÈ´Ù. linkÇÔ¼ö·Î ¿ø·¡ÀÇ ÆÄÀÏ ¿¡ »õ·Î¿î À̸§ÀÌ ´õÇØÁö¸é, ¸µÅ©µÇ¾îÁø ÆÄÀÏÀÇ ¼Ó¼º º¯°æ ½Ã°£(attribute change time)ÀÌ °»½ÅµÇ°í, link¸¦ ÅëÇØ ¸¸µé¾îÁø »õ·Î¿î À̸§À» Æ÷ÇÔÇÏ´Â µð·ºÅ丮ÀÇ ¼Ó¼º º¯°æ ½Ã°£°ú °»½Å ½Ã°£ (modifi-cation) ÇʵåµéÀÌ °»½ÅµÈ´Ù. ÀÌ¿Í °°Àº ÇʵåµéÀº unlink, remove, rmdir·Î ÆÄÀÏ À̸§ÀÌ Á¦°Å µÉ ¶§ ¿µÇâÀ» ¹Þ´Â´Ù. rename·Î ÆÄÀÏÀ» Àç¸í¸íÇÒ ¶§, ÆÄÀÏÀÌ Æ÷ÇÔµÈ ºÎ¸ð µð·ºÅ丮µéÀÇ ¼Ó¼º º¯°æ ½Ã°£°ú °»½Å½Ã°£ Çʵåµé ÀÌ ¿µÇâÀ» ¹ÞÁö¸¸, ÆÄÀÏ¿¡ °ü·ÃµÈ ½Ã°£¼Ó¼ºµéÀº º¯°æµÇÁö ¾Ê´Â´Ù.
ÆÄÀÏÀÇ ¼Ó¼ºµéÀÇ º¯°æÀº( ¿¹¸¦ µé¾î, chmod¸¦ ÅëÇØ¼) ±× ¼Ó¼º º¯°æ½Ã°£ Çʵ带 °»½ÅÇÑ´Ù.
´ç½ÅÀº ¼Ó¼º º¯°æ ½Ã°£À» Á¦¿ÜÇϰí, utime ÇÔ¼ö¸¦ »ç¿ëÇØ¼ ¸í½ÃÀûÀ¸·Î ÆÄÀÏÀÇ Å¸ÀÓ½ºÅÛÇÁ¸¦ º¯°æ ÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº Çì´õÆÄÀÏ 'utime.h'¿¡ Á¤ÀÇ µÇ¾î ÀÖ´Ù.
µ¥ÀÌÅÍ Å¸ÀÔ : struct utimbuf
utimbuf ±¸Á¶Ã¼´Â ¾î¶² ÆÄÀÏ¿¡ »õ·Î¿î °Ë»ö ½Ã°£°ú °»½Å½Ã°£À» Á¤ÇØÁÖ±â À§Çؼ utime ÇÔ¼ö¿¡¼ »ç¿ëµÈ´Ù. À̰ÍÀº ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» Æ÷ÇÔÇÑ´Ù.
time_t actime À̰ÍÀº ÆÄÀÏÀÇ °Ë»ö½Ã°£ÀÌ´Ù.
time_t modtime À̰ÍÀº ÆÄÀÏÀÇ °»½Å½Ã°£ÀÌ´Ù.
ÇÔ¼ö : int utime (const char *filename, const struct utimbuf *times)
ÀÌ ÇÔ¼ö´Â filenameÀ̸§À» °¡Áø ÆÄÀϰú ¿¬°üµÈ ½Ã°£À» º¯°æÇϱâ À§ÇØ »ç¿ëµÈ´Ù. ¸¸ÀÏ times°¡ ³Î Æ÷ÀÎÅͶó¸é, ÆÄÀÏÀÇ °Ë»ö½Ã°£°ú °»½Å½Ã°£µéÀº ÇöÀçÀÇ ½Ã°£À¸·Î ¼³Á¤µÈ´Ù. ±×·¸Áö¾Ê´Ù¸é, ±×µéÀº times°¡ °¡¸®Å°´Â ±¸Á¶Ã¼ utimbufÀÇ actime¿Í modtime ¸â¹öµé·ÎºÎÅÍ ¾òÀº °ªÀ¸·Î ½Ã°£À» ¼³Á¤ÇÑ´Ù.
ÆÄÀÏÀÇ ¼Ó¼ºº¯°æ½Ã°£Àº µÎ°¡Áö °æ¿ì ¸ðµÎ ÇöÀçÀÇ ½Ã°£À¸·Î ¼³Á¤µÈ´Ù. ( ŸÀÓ ½ºÅÛÇÁµéÀÌ º¯°æÀº, ÆÄ ÀÏ ¼Ó¼ºÀÇ º¯°æÀ» ¼ö¹ÝÇÑ´Ù.)utime ÇÔ¼ö´Â ¼º°øÇϸé 0À» ¸®ÅÏÇϰí, ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ´Ù. º¸ÅëÀÇ
ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯¿¡ ´õÇÏ¿©( 6.2.3Àý [File Name Errors] 60 ÆäÀÌÁö ]ÂüÁ¶), ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ ¼ö¸¦ À§Çؼ Á¤ÀÇµÈ ¿¡·¯ »óȲµéÀÌ´Ù.
EACCES
times Àμö·Î ³Î Æ÷ÀÎÅ͸¦ ÁÖ¾úÀ» ¶§ Çã°¡¹®Á¦°¡ ÀÖ´Ù. ÆÄÀÏÀÇ Å¸ÀÓ ½ºÅÛÇÁ¸¦ °»½ÅÇϱâ À§Çؼ´Â ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚÀÌ°í ÆÄÀÏ¿¡ ¾²±â Çã°¡¸¦ °¡Áö°í Àְųª, Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚÀ̾î¾ß ÇÑ´Ù.
ENOENT
ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
EPERM
¸¸ÀÏ timesÀμö°¡ ³Î Æ÷ÀÎÅͶó¸é, ´ç½ÅÀº ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚÀ̰ųª Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÀÚÀ̾î¾ß¸¸ ÇÑ´Ù. ÀÌ ¿¡·¯´Â ±× ¹®Á¦¸¦ º¸°íÇϴµ¥ »ç¿ëµÈ´Ù.
EROFS
ÆÄÀÏÀÌ ¿ÀÁ÷ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¸ÀçÇÑ´Ù.
¼¼°¡Áö ŸÀÓ ½ºÅÛÇÁµéÀº ¿¬°üµÈ ¸¶ÀÌÅ©·ÎÃÊ(microsecond) ºÎºÐÀ» °¡Áö°í ÀÖ´Ù. À̵é ÇʵåµéÀº st_atime_usec, st_mtime_usec, st_ctime_usec¶ó°í ºÒ¸°´Ù; °¢°¢Àº ¸¶ÀÌÅ©·ÎÃÊ ´ÜÀ§·Î Ç¥ÇöµÈ 0¿¡¼ 999,999»çÀÌÀÇ °ªÀ» °¡Áö°í ÀÖ´Ù. ±×µéÀº timeval ±¸Á¶Ã¼ÀÇ tv_usec¿¡ ÇØ´çÇÑ ´Ù; 17.2.2Àý[High-Resolution Calendar] 235 ÆäÀÌÁö ÂüÁ¶. utimes ÇÔ¼ö´Â utime¿Í °°Áö¸¸, ÆÄÀÏ¿¡ °ü ·ÃµÈ ½Ã°£µéÀ» ¾ÆÁÖ ¼¼¹ÐÇÏ°Ô Á¤ÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ À§ÇÑ ÇÁ·ÎÅäŸÀÔÀº Çì´õÆÄÀÏ 'sys/time.hÀÌ´Ù.
ÇÔ¼ö : int utimes (const char *filename, struct timeval tvp[2])
ÀÌ ÇÔ¼ö´Â filenameÀÇ À̸§À» °¡Áø ÆÄÀÏÀÇ °Ë»ö ½Ã°£°ú °»½Å½Ã°£À» ¼³Á¤ÇÏ´Â ÇÔ¼öÀÌ´Ù. »õ·Î¿î ÆÄ ÀÏ °Ë»ö ½Ã°£Àº tvp[0]¿¡ ÀÇÇØ Á¤ÇØÁö°í, »õ·Î¿î °»½Å½Ã°£Àº tvp[1]¿¡ ÀÇÇØ ¼³Á¤µÈ´Ù. ÀÌ ÇÔ¼ö´Â BSD¿¡¼ ¿Ô´Ù. ¸®Åϰª°ú error ¿¡·¯ »óȲÀº utimeÇÔ¼ö¿Í °°´Ù.
9.9 Ư¼ö ÆÄÀÏ ¸¸µé±â.
mknod ÇÔ¼ö´Â µð¹ÙÀ̽º¿Í °°Àº, Ư¼öÇÑ ÆÄÀÏÀ» ¸¸µé±â À§ÇÑ ÇÔ¼ö´Ù. GNU ¶óÀ̺귯¸®´Â BSD¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ ÀÌ ÇÔ¼ö¸¦ °®°í ÀÖ´Ù. mknodÀÇ ÇÁ·ÎÅäŸÀÔÀº 'sys/stat.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : int mknod (const char *filename, int mode, int dev)
mknod ÇÔ¼ö´Â filenameÀÇ À̸§À» °¡Áø Ư¼öÇÑ ÆÄÀÏÀ» ¸¸µç´Ù. modeÀμö´Â S_IFCHR(¹®ÀÚ Æ¯¼ö ÆÄÀÏÀ» À§ÇØ)³ª, S_IFBLK(ºí·° Ư¼ö ÆÄÀÏÀ» À§ÇØ)¿Í °°Àº ´Ù¾çÇÑ Æ¯¼ö ÆÄÀÏ ºñÆ®µéÀ» °¡Áö°í ÆÄÀÏ ÀÇ ¸ðµå¸¦ ÁöÁ¤ÇÑ´Ù.9.8.3Àý [Testing Fiel Type] 134 ÆäÀÌÁö ÂüÁ¶. dev Àμö´Â µð¹ÙÀ̽º¸¦ Á¤ÇÑ´Ù. ±×°ÍÀÇ Á¤È®ÇÑ ÇØ¼®Àº ¸¸µé¾îÁø Ư¼ö ÆÄÀÏÀÇ Á¾·ù¿¡ ÀÇÁ¸ÇÑ´Ù. ¸®ÅϰªÀº ¼º°øÇϸé 0À̰í, ½ÇÆÐÇϸé -1ÀÌ´Ù. º¸ÅëÀÇ ÆÄÀÏ À̸§ ¹®¹ý ¿¡·¯¿¡ ´õÇÏ¿© ( 6.2.3Àý [File Name Errors] 60 ÆäÀÌÁö ÂüÁ¶), ´ÙÀ½ ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EPERM
È£ÃâÇÑ ÇÁ·Î¼¼½º°¡ Ư±ÇÀÌ ¾ø´Ù. Ư¼ö ÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ´Â °ÍÀº ½´ÆÛÀ¯Àú»ÓÀÌ´Ù.
ENOSPC
»õ·Î¿î ÆÄÀÏÀ» °®°í ÀÖ´Â µð·ºÅ丮³ª ÆÄÀÏ ½Ã½ºÅÛÀÌ °¡µæÃ¡°í, ´õ ÀÌ»ó È®ÀåÇÒ ¼ö ¾ø´Ù.
EROFS
»õ·Î¿î ÆÄÀÏÀ» °®°í ÀÖ´Â µð·ºÅ丮°¡ ¿ÀÁ÷ Àб⠸ðµå ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡ Àֱ⠶§¹®¿¡ °»½ÅµÉ ¼ö ¾ø ´Ù.
EEXIST
filenameÀÇ À̸§À» °¡Áø ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÑ´Ù. ¸¸ÀÏ ´ç½ÅÀÌ ÀÌ ÆÄÀÏÀ» ´ëüÇϱ⠿øÇÑ´Ù¸é, ´ç½ÅÀº ¸ÕÀú ±× ¿ø·¡ÀÇ ÆÄÀÏÀ» Á¦°ÅÇØ¾ß¸¸ ÇÑ´Ù.
9.10 Àӽà ÆÄÀϵé.
¸¸ÀÏ ´ç½ÅÀÇ ÇÁ·Î±×·¥¿¡¼ ÀÓ½ÃÆÄÀÏÀÇ »ç¿ëÀÌ ÇÊ¿äÇÏ´Ù¸é, ´ç½ÅÀº ±×°ÍÀ» °³¹æÇϱâ À§ÇØ tmpfileÇÔ ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶Ç´Â ÀÓ½ÃÆÄÀÏÀÇ À̸§À» ¸¸µé±â À§ÇØ tmpnam ÇÔ¼ö¸¦ »ç¿ëÇϰí fopenÀ» »ç ¿ëÇØ¼ º¸ÅëÀÇ ¹æ¹ýÀ¸·Î±× ÀÓ½ÃÆÄÀÏÀ» °³¹æÇÒ ¼ö ÀÖ´Ù.
tempnamÇÔ¼ö´Â tmpnamÇÔ¼ö¿Í °°Áö¸¸, ´ç½ÅÀÌ ±× ÀÓ½ÃÆÄÀÏÀÌ µé¾î°¥ µð·ºÅ丮°¡ ¹«¾ùÀÎÁö, ±×¸®°í ±×µéÀÇ ÆÄÀÏÀ̸§ÀÌ ¹«¾ùÀÎÁö¿¡ ´ëÇÑ °ÍÀ» Á¤Çϵµ·Ï Çã¿ëÇÑ´Ù.
ÇÔ¼ö : FILE * tmpfiel (void)
ÀÌ ÇÔ¼ö´Â "wb+" ¸ðµå·Î fopenÀ» È£ÃâÇÔÀ¸·Î½á, °»½ÅÇÑ ¸ðµå·Î Àӽà ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¸¸µç´Ù. ±× ÆÄÀÏÀº ±× ÇÁ·Î±×·¥ÀÌ Á¾·áÇÒ¶§³ª ´ÝÈú ¶§, ÀÚµ¿ÀûÀ¸·Î Á¦°ÅµÈ´Ù. ( ¾î¶² ´Ù¸¥ ANSI C ½Ã½ºÅÛ¿¡¼ ±× ÇÁ·Î±×·¥ÀÌ ºñÁ¤»óÀûÀ¸·Î Á¾·áµÇ¸é ÆÄÀÏÀÇ Á¦°Åµµ ½ÇÆÐÇÒ °ÍÀÌ´Ù.)
ÇÔ¼ö : char * tmpnam (char *result)
ÀÌ ÇÔ¼ö´Â ÇöÀç Á¸ÀçÇϰí ÀÖ´Â ÆÄÀÏ À̸§ÀÌ ¾Æ´Ñ À¯¿ëÇÑ ÆÄÀÏÀ̸§À» ¸¸µé¾î¼ ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ resultÀμö°¡ ³Î Æ÷ÀÎÅͶó¸é, ¸®ÅϰªÀº ´ÙÀ½ È£Ãâ·Î °»½ÅµÈ ³»ºÎ Á¤Àû ½ºÆ®¸²ÀÇ Æ÷ÀÎÅÍÀÌ´Ù. ±×·¸Áö ¾Ê´Ù¸é, resultÀμö´Â Àû¾îµµ L_tmpnamÀÇ ¹è¿À» °¡¸®Å°´Â Æ÷ÀÎÅÍÀ̰í result´Â ±× ¹è¿¾È¿¡ ÀúÀåµÈ ´Ù. tmpnamÀÇ È£Ãâ¿¡ ³Ê¹« ¸¹Àº ½Ã°£ÀÌ ¼Ò¿äµÇ¸é ½ÇÆÐÀÇ °¡´É¼ºÀÌ ÀÖ´Ù. À̰ÍÀº ÀÓ½ÃÆÄÀÏÀ» Á¤ÇØ Áø °³¼öÀÇ ÆÄÀÏÀÌ ÀÖ¾î¾ß Çϴ°÷¿¡¼ ÀÌ¹Ì ´Ù¸¥ ÆÄÀϵé·Î ±× °³¼ö°¡ ü¿öÁø°÷¿¡ ¸¸µé·ÁÇ߱⠶§¹®ÀÌ ´Ù. tmpnamÀÌ ½ÇÆÐÇÏ¸é ³Î Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.
¸ÅÅ©·Î : int L__tmpnam
ÀÌ ¸ÅÅ©·Î °ªÀº tmpnamÇÔ¼ö·Î ¸¸µé¾îÁø ÆÄÀÏÀ̸§À» ÀúÀåÇϱ⿡ ÃæºÐÇÑ ¹®ÀÚ¿ÀÇ ÃÖ¼Ò ÇÒ´ç Å©±â ¸¦ ³ªÅ¸³»±â À§ÇÑ Á¤¼ö »ó¼ö Ç¥ÇöÀÌ´Ù.
¸ÅÅ©·Î : int TMP__MAX
¸ÅÅ©·Î TMP_MAX´Â ´ç½ÅÀÌ tmpnamÀ¸·Î ¸¸µé ¼ö ÀÖ´Â Àӽà ÆÄÀÏ À̸§ÀÇ ÃÖ¼Ò °æ°èÀÌ´Ù. ´ç½ÅÀÌ ³Ê¹« ¸¹Àº Àӽà ÆÄÀÏ À̸§À» ¸¸µé¾î ½ÇÆÐ¸¦ °æÇèÇϱâ Àü¿¡, ÀÌ ¸ÅÅ©·Î °ª¿¡ ÀÇÁ¸ÇÒ ¼ö ÀÖ´Ù.
GNU ¶óÀ̺귯¸®¿¡¼´Â, ´ç½ÅÀº ´ç½ÅÀÇ µð½ºÅ©ÀÇ °ø°£ÀÌ Çã¶ôÇÏ´Â ¸¸ÅÀÇ ¸¹Àº °³¼öÀÇ ÀÓ½ÃÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ´Ù. ¾î¶² ´Ù¸¥ ½Ã½ºÅÛ¿¡¼´Â ÀÓ½ÃÆÄÀÏÀÇ °³¼ö¸¦ ÀÛ°Ô Á¦ÇÑÇϰí ÀÖ´Ù. ±× Á¦ÇÑÀº 25º¸´Ù ´Â °áÄÚ ÀÛÁö¾Ê´Ù.
ÇÔ¼ö : char * tempnam (const char *dir, const char *prefix)
ÀÌ ÇÔ¼ö´Â ´ÜÀÏÇÑ Àӽà ÆÄÀÏÀ̸§À» »ý¼ºÇÑ´Ù. ¸¸ÀÏ prefix°¡ ³Î Æ÷ÀÎÅͰ¡ ¾Æ´Ï°í ÀÌ ¹®ÀÚ¿ÀÌ 5°³ ¹®ÀÚ ÀÌ»óÀÌ¸é ±× prefix°¡ ÆÄÀÏÀ̸§À¸·Î »ç¿ëµÈ´Ù. ÀÓ½ÃÆÄÀÏ À̸§À» À§ÇÑ µð·ºÅ丮´Â ¹ØÀǰ͵éÀ» ½Ã ÇèÇÔÀ¸·Î ÀÎÇØ °áÁ¤ÇÑ´Ù.
µð·ºÅ丮´Â ¹Ýµå½Ã Á¸ÀçÇÏ°í ±â·Ï°¡´ÉÇØ¾ß ÇÑ´Ù.
o ȯ°æ º¯¼ö TMPDIRÀÌ Á¤ÀǵǾú´ÂÁö...
o dir Àμö°¡ ³Î Æ÷ÀÎÅÍÀÎÁö...
o P_tmpdir ¸ÅÅ©·ÎÀÇ °ª.
o '/tmp' µð·ºÅ丮.
ÀÌ ÇÔ¼ö´Â SVID¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ Á¤ÀǵǾú´Ù.
SVID ¸ÅÅ©·Î : char * P__tmpdir
ÀÌ ¸ÅÅ©·Î´Â ÀÓ½ÃÆÄÀÏÀ» À§ÇÑ µðÆúÆ®(default) µð·ºÅ丮ÀÇ À̸§ÀÌ´Ù. ¿À·¡µÈ À¯´Ð½º ½Ã½ºÅÛµéÀº ¼³ ¸íµÈ ÇÔ¼öµéÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù. ´ë½Å¿¡ ±×µéÀº mktemp ¿Í mkstemp ¸¦ »ç¿ëÇÑ´Ù. À̵é ÇÔ¼öµé Àº ´ç½ÅÀÌ ÁØÆÄÀÏ À̸§ ÅÛÇø®Æ® ¹®ÀÚ¿À» °»½ÅÇÏ´Â ÀÛ¾÷À» ÇÑ´Ù. ¹®ÀÚ¿ÀÇ ¸¶Áö¸· 6¼¸°³ ¹®ÀÚµéÀº ¸¸µå½Ã 'XXXXXX'ÀÌ µÇ¾î¾ß¸¸ÇÑ´Ù. À̵é 6°³ 'X' ¹®ÀÚµéÀº ´ÜÀÏÇÑ ÆÄÀÏ À̸§ ¹®ÀÚ¿À» ¸¸µç 6°³ ÀÇ ¹®ÀÚµé·Î ´ëüµÈ´Ù. ¹®ÀÚ¿Àº º¸Åë '/tmp/prefixXXXXXX'ó·³ »ç¿ëÇÏ°í °¢°¢ÀÇ ÇÁ·Î±×·¡Àº ´Ü ÀÏÇÑ prefix¸¦ »ç¿ëÇÑ´Ù.
³ëÆ® : mktemp ¿Í mkstemp°¡ ÅÛÇø®Æ® ¹®ÀÚ¿À» °»½ÅÇϱ⠶§¹®¿¡, ´ç½ÅÀº ±×µé¿¡°Ô ¹®ÀÚ¿ »ó¼ö¸¦ ÁÖÁö¾Ê¾Æ¾ß ÇÑ´Ù. ¹®ÀÚ¿ »ó¼öµéÀº º¸Åë ¿ÀÁ÷ Àб⸸ °¡´ÉÇÑ ±â¾ïÀå¼Ò¿¡ Á¸ÀçÇϰí, ±×·¡¼ ´ç½ÅÀÇ ÇÁ·Î±×·¥Àº mktemp ³ª mkstemp°¡ ¹®ÀÚ¿À» °»½ÅÇÏ·Á ½ÃµµÇÒ ¶§ ÆÄ±«µÇ°í ¸¸´Ù.
ÇÔ¼ö : char * mktemp (char *template)
mktempÇÔ¼ö´Â À§¿¡ ¼³¸íµÈ °Íó·³ Àӽà ¹®ÀÚ¿À» °íÃļ ´ÜÀÏÇÑ ÆÄÀÏÀ̸§À» »ý¼ºÇÑ´Ù. ¸¸ÀÏ ¼º°ø Çϸé, °»½ÅµÈ ÅÛÇø®Æ®¸¦ ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ mktemp°¡ ´ÜÀÏÇÑ ÆÄÀÏ À̸§À» ¹ß°ßÇÒ ¼ö ¾ø´Ù¸é, mktemp´Â ºó ¹®ÀÚ¿À» ¸¸µé°í ±×°ÍÀ» ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ ±× ÅÛÇø®Æ®¿¡ 'XXXXXX'·Î ³¡³ªÁö ¾Ê´Â´Ù ¸é, mktemp´Â ³Î Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.
ÇÔ¼ö : int mkstemp (char *template)
mkstempÇÔ¼ö´Â mktemp°¡ Çϴ°Íó·³ ´ÜÀÏÇÑ ÆÄÀÏ À̸§À» »ý¼ºÇÏÁö¸¸, mkstemp´Â ¶ÇÇÑ openÀÇ °úÁ¤À» ÅëÇØ¼ ´ç½ÅÀ» À§ÇØ ±× ÆÄÀÏÀ» °³¹æÇÑ´Ù ( 8.1Àý [Opening and Closing Files] 103 ÆäÀÌÁö Âü Á¶). ¸¸ÀÏ ¼º°øÇϸé Àû´çÇÑ ÅÛÇø®Æ®¸¦ °»½ÅÇÏ°í ±× ÆÄÀÏÀ» Àбâ¿Í ¾²±â¸¦ À§ÇØ °³¹æÇؼ ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ mkstemp°¡ ´ÜÀÏÇÑ À̸§À» °¡Áø ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø´Ù¸é ±×°ÍÀº ºó ¹®ÀÚ¿ÀÇ ÅÛÇø®Æ®¸¦ ¸¸µé °í -1À» ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ ÅÛÇø®Æ®°¡ 'XXXXXX'·Î ³¡³ªÁö ¾Ê´Â´Ù¸é, mkstemp´Â -1À» ¸®ÅÏÇϰí ÅÛ Çø®Æ®¸¦ °»½ÅÇÏÁö ¾Ê´Â´Ù.
mktemp¿Í ´Þ¸®, mkstemp´Â Àӽà ÆÄÀÏÀ» ¸¸µé·Á ½ÃµµÇϰí ÀÖ´Â ´Ù¸¥ ÇÁ·Î±×·¥°ú Ãæµ¹ÀÇ °¡´É¼ºÀÌ ¾øÀÌ ´ÜÀÏÇÑ ÆÄÀÏÀ» ¸¸µå´Â °ÍÀ» º¸ÁõÇÑ´Ù. ±× ÀÌÀ¯´Â openÇÔ¼ö¿¡ O_EXEL Ç÷¡±× ºñÆ®¸¦ »ç¿ëÇÔÀ¸ ·Î ÀÎÇØ¼, ´ç½ÅÀÌ Ç×»ó »õ·Î¿î ÆÄÀÏÀ» ¸¸µé±â¸¦ ¿øÇÔÀ» ¾Ë¸®°í, ±× ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é ¿¡·¯¸¦ ³ªÅ¸³»µµ·Ï ÀÛ¾÷Çϱ⠶§¹®ÀÌ´Ù.