ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
1 ¼Ò°³
±â°è´Â Á¶ÀÛÀÚÀÇ ÀÔ·ÂÀ» ¹Þ¾Æ¼, ÇÁ·Î±×·¡¹Ö µÈµ¥·Î ÀÏÀ» ÇÏ°í ±× °á°ú¹°À» Ãâ·ÂÇÑ´Ù. ¹Í¼±â´Â »ç°ú¸¦ ÀÔ·Â¹Þ°í ¹öưÀ» ´©¸£¸é, ÇÁ·Î±×·¡¹Ö µÈµ¥·Î ¸ðÅ͸¦ µ¹·Á¼ »ç°ú¸¦ Àß°³ Âɰ³°í ±× °á°ú¹°·Î »ç°úÁ꽺¸¦ Ãâ·ÂÇÑ´Ù.
ÄÄÇ»ÅÍ´Â Á¤º¸¸¦ ó¸®Çϱâ À§ÇÑ ±â°è·Î ÀÔ·ÂÀ» ¹Þ¾Æ¼ ó¸®ÇÏ°í ±× °á°ú¸¦ Ãâ·ÂÇÑ´Ù´Â Á¡¿¡¼ ºÃÀ» ¶§, ±Ùº»ÀûÀ¸·Î ¹Í¼¿Í ´Ù¸¦ ¹Ù°¡ ¾ø´Ù. ¹Í¼¿Í ´Ù¸¥ Á¡À̶ó¸é ÀÔ·ÂÀ¸·Î »ç°ú ´ë½Å (ºñÆ®·Î ÀÌ·ç¾îÁø)Á¤º¸¸¦ ÀԷ¹޾Ƽ ó¸®ÇÏ°í ±× °á°ú¹°·Î Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù´Â Á¡ Á¤µµÀÏ °ÍÀÌ´Ù.
¿©·¯ºÐÀº ÀÌ¹Ì ÄÄÇ»ÅÍ ½Ã½ºÅÛÀº Űº¸µå¸¦ ÅëÇØ¼ µ¥ÀÌÅ͸¦ ÀԷ¹޾Ƽ ÇÁ·Î±×·¥¿¡ ³Ñ°Ü¼ ó¸®ÇÏ°í ±× °á°ú¹°À» ¸ð´ÏÅÍ·Î Ãâ·ÂÇϰí ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ó¸®ÇϰíÀÚ ÇÏ´Â µ¥ÀÌÅÍÀÇ Á¾·ù¿¡ µû¶ó¼ ÀԷ±â±â°¡ ¸¶¿ì½º³ª ÆÒ, ÅÍÄ¡½ºÅ©¸°ÀÌ µÈ°í, Ãâ·Â±â±â ¿ª½Ã ÆÄÀÏ, ÇÁ¸°ÅÍ, Å×ÀÌÇÁ µîÀÌ µÇ±âµµ ÇÒ °ÍÀÌ´Ù. ![]()
À̹øÀå¿¡¼´Â ÄÄÇ»ÅÍ ½Ã½ºÅÛ¿¡¼ÀÇ ÀԷ°ú Ãâ·ÂÀ» Á¦¾îÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¼ °ÍÀÌ´Ù. 2 ¸ðµç°Ç ÆÄÀÏÀÌ´Ù
À¯´Ð½º¿¡¼´Â ¸ðµç°É ÆÄÀÏ·Î Ãë±ÞÇÑ´Ù. Çϵåµð½ºÅ©¿¡ Á¸ÀçÇÏ´Â ÆÄÀÏ, µð·ºÅ丮´Â ¹°·ÐÀÌ°í ³×Æ®¿öũīµå, »ç¿îµåÄ«µå, Űº¸µå, ¸¶¿ì½º, Çϵåµð½ºÅ© ±× ÀÚü ±îÁö ¸ù¶¥ ÆÄÀÏ·Î Ãë±ÞÇÑ´Ù.
À¯´Ð½º ½Ã½ºÅÛÀ» óÀ½ Á¢ÇÒ¶§ ²Ï³ª È¥µ¿µÇ´Â ºÎºÐÀ̱⵵ ÇÏ´Ù. À©µµ¿ì¿¡´Â ÆÄÀÏÀº ´ÜÁö Çϵåµð½ºÅ©»ó¿¡ Á¸ÀçÇÏ´Â ³í¸®ÀûÀÎ Á¤º¸ÀÇ ÁýÇÕÀ» ±× ´ë»óÀ¸·Î Çϱ⠶§¹®ÀÌ´Ù. ¿¹¸¦ µéÀÚ¸é Çϵåµð½ºÅ©´Â C: D:¿Í °°Àº ÆÄÀÏÀÌ ¾Æ´Ñ ÀåÄ¡·Î ÀνÄÇÑ´Ù.
±×·¯³ª À¯´Ð½º ½Ã½ºÅÛ¿¡¼´Â ÀåÄ¡µµ ÆÄÀÏ·Î Ãë±ÞµÈ´Ù. ¸®´ª½ºµµ À¯´Ð½º¿Í µ¿ÀÏÇÑ ÆÄÀϽýºÅÛÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î, ¸®´ª½º¸¦ ¿¹·Î µé¾î¼ ¼³¸íÇϰڴÙ. ¸®´ª½º¿¡¼ Çϵåµð½ºÅ©´Â /dev/hda1, /dev/hda2 ÀÌ·±½ÄÀ¸·Î Çϵåµð½ºÅ©»óÀÇ ÆÄÀÏ·Î Á¸ÀçÇÑ´Ù. »Ó¸¸ ¾Æ´Ï´Ù. »ç¿îµå Ä«µå´Â /dev/dsp, ÇÁ¸°Æ®´Â /dev/lp, cdromÀº /dev/cdrom ÀÇ À̸§À» °¡Áø ÆÄÀÏ·Î Á¸ÀçÇÑ´Ù.
ÀϹݻç¿ëÀÚÀÇ ÀÔÀå¿¡¼ ÀåÄ¡¸¦ ÆÄÀÏ·Î ÀνÄÇÏ´Â°Ç ºÒÇÕ¸®ÇØ º¸ÀÏ ¼ö ÀÖ´Ù. ±×·¯³ª °³¹ßÀÚ ÀÔÀå¿¡¼´Â ¸Å¿ìÇÕ¸®ÀûÀÎ ¹æ¹ýÀÌ´Ù. ¸ðµç ÀåÄ¡¶ó´Â °ÍÀº ÀÔ·ÂÀ» ¹Þ¾Æµé¿©¼ Ãâ·ÂÇÏ´Â ¸ÅÄ¿´ÏÁòÀ» °¡Áö´Âµ¥, ÀÌ´Â ÆÄÀÏÀÇ ¸ÅÄ¿´ÏÁò°ú ¿ÏÀüÈ÷ µ¿ÀÏÇϱ⠶§¹®À¸·Î ÆÄÀÏÀ» ´Ù·ç´Â °Í°ú µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î ´Ù¸¥ ÀåÄ¡µéµµ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÅëÀÏÇÒ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù. »ç¿îµåÄ«µå¸¦ ¿¹·Î µç´Ù¸é, test.wav ÆÄÀÏÀ» ÀÐ¾î¼ /dev/dsp¿¡ ¾´´Ù´Â ½ÄÀ¸·Î »ç¿îµå¸¦ Ç÷¹ÀÌÇÒ ¼ö ÀÖ´Ù. ½ÇÁ¦·Î ÇÁ·Î±×·¡¹Ö ÇÒ¶§µµ ÀÏ¹Ý ÆÄÀÏÀ» ÀÐ°í ¾²´Â °Íó·³ ÀåÄ¡µé¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ¹°·Ð ÀÏ¹Ý ÆÄÀϵ鿡 ÀÐ°í ¾²´Â °Íº¸´Ù´Â ¾à°£ º¹ÀâÇϱä ÇÏÁö¸¸ ¿ø¸®ÀûÀ¸·Î´Â µ¿ÀÏÇÏ´Ù. ![]()
°á±¹ ÇÁ·Î±×·¡¸Ó´Â º¹ÀâÇÑ ÀåÄ¡Á¦¾î¿Í °ü·ÃµÈ ÇнÀÀ» ÃÖ¼ÒÈ Çϸé¼, ÆÄÀÏÀ» »ç¿ëÇÏ´Â °Íó·³ ¿©·¯ ÀåÄ¡µéÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù. 3 ÆÄÀÏÀÇ Á¾·ù
À§¿¡¼ ¿¹»óÇß°ÚÁö¸¸ ÆÄÀÏÀ̶ó°í ÇØ¼ ´Ù °°Àº ÆÄÀÏÀº ¾Æ´Ï´Ù. ÀϹÝÀûÀ¸·Î ¾Ë°í ÀÖ´Â ºñÆ® µ¥ÀÌÅ͸¦ ÀúÀåÇÑ ÆÄÀÏÀÌ Àִ°¡ Çϸé, ÀåÄ¡¿Í ´ëÀÀµÇ´Â ÆÄÀϵµ ÀÖ´Ù. ³»ºÎÅë½Å°ú ¿ÜºÎÅë½ÅÀ» ÀÌ¿ëÇØ¼ »ç¿ëµÇ´Â ¼ÒÄÏÆÄÀÏ - ¸®´ª½º´Â ³×Æ®¿öÅ© Åë½Åµµ ÆÄÀÏÀ» ÅëÇØ¼ ÇÑ´Ù - ÆÄÀÌÇÁ¿Í ´ëÀÀµÇ´Â ÆÄÀÏ, µð·ºÅ丮¿Í ´ëÀÀµÇ´Â ÆÄÀϵîÀÌ ÀÖ´Ù. ¿¹ÄÁµ¥ ¸ðµç°ÍÀÌ ÆÄÀÏÀÌ´Ù.
¸®´ª½º¿¡¼´Â ls ¸í·ÉÀ» ÀÌ¿ëÇØ¼ ÀÌ·¯ÇÑ ÆÄÀÏÀÇ Á¾·ù¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. # ls -al drwxr-xr-x 12 root root 13820 2007-11-12 22:19 . drwxr-xr-x 21 root root 4096 2007-10-31 23:47 .. drwxr-xr-x 2 root root 100 2007-11-13 06:45 .initramfs -rw-r--r-- 1 root root 0 2007-11-13 06:45 .initramfs-tools drwxr-xr-x 3 root root 60 2007-11-13 06:45 .static drwxr-xr-x 5 root root 120 2007-11-12 22:19 .udev lrwxrwxrwx 1 root root 13 2007-11-13 06:45 MAKEDEV -> /sbin/MAKEDEV crw-rw---- 1 root root 10, 63 2007-11-12 21:46 acpi crw-rw---- 1 root audio 14, 12 2007-11-12 21:46 adsp crw-rw---- 1 root audio 14, 4 2007-11-12 21:46 audio drwxr-xr-x 3 root root 60 2007-11-13 06:45 bus lrwxrwxrwx 1 root root 3 2007-11-13 06:45 cdrom -> hdals ÀÇ °¡Àå ¾Õ ÇʵåÀÇ Ã¹¹®ÀÚ°¡ ÆÄÀÏÀÇ Á¾·ù¸¦ ³ªÅ¸³½´Ù. ¾Æ·¡´Â ls ¸¦ ÅëÇØ¼ ¾Ë¾Æ³¾ ¼ö ÀÖ´Â ÆÄÀÏÀÇ Á¾·ùÀÌ´Ù. ÆÄÀϵéÀº ¾Æ·¡ÀÇ Á¾·ùÁß Çϳª¿¡ Æ÷ÇԵȴÙ. pipe, ¸µÅ©, ¼ÒÄÏ µî¿¡´ëÇØ¼´Â ³ªÁß¿¡ ÀÚ¼¼È÷ ¾ð±ÞÇÒ °ÍÀÌ´Ù. ¿ì¼±Àº ¾Æ·¡¿Í °°Àº ´Ù¾çÇÑ Á¾·ùÀÇ ÆÄÀÏÀÌ ÀÖ´Ù´Â °Í¸¸ ÀÌÇØÇÏ°í ³Ñ¾î°¡µµ·Ï ÇÏÀÚ.
4 ÆÄÀÏ ¿±â
ÆÄÀÏÀ» ´Ù·ç´Â ±âº»ÀûÀÎ È帧Àº ´ÙÀ½°ú °°´Ù.
ÆÄÀÏÀ» ¿ÀÇÂÇØ ÁÙ°ÍÀÎÁö ¾Æ´ÑÁö¸¦ °áÁ¤ÇÏ´Â µ¥¿¡´Â ´ÙÀ½°ú °°Àº ÀÌÀ¯°¡ ÀÖ´Ù.
4.1 open ½Ã½ºÅÛÄÝÀ» ÀÌ¿ëÇÑ ÆÄÀÏ ¿±â
ÆÄÀÏ ÀÛ¾÷À» Çϱâ·Î ¸¶À½À» ¸Ô¾ú´Ù¸é, Ä¿³Î¿¡ Á¤ÇØÁø ÆÄÀÏÀ» ¿ ¼ö ÀÖµµ·Ï Çã¿ëÇØ ´Þ¶ó°í ¿äûÀ» ÇØ¾ß ÇÒ °ÍÀÌ´Ù. Ä¿³Î¿¡ ¿äûÀ» ÇÒ ¼ö ÀÖµµ·Ï Áö¿øµÇ´Â ÇÔ¼ö¸¦ ½Ã½ºÅÛÄÝ(ȤÀº ½Ã½ºÅÛÇÔ¼ö)¶ó°í ¾ð±ÞÇß´ø °ÍÀ» ±â¾ïÇϰí ÀÖÀ» °ÍÀÌ´Ù. ¸®´ª½º´Â ÆÄÀÏ ¿Àǰú °ü·ÃµÈ ¿äûÀ» À§Çؼ open(2) À̶ó´Â ½Ã½ºÅÛÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.
open(2)ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù. #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode)pathname : ¿±â¸¦ ¿äûÇÏ´Â ÆÄÀÏÀÌ´Ù. »ó´ë°æ·Î ȤÀº Àý´ë°æ·Î¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
flags : ¾î¶² ¹æ½ÄÀ¸·Î ¿°ÍÀÎÁö¸¦ °áÁ¤Çϱâ À§Çؼ »ç¿ëÇϸç bitwise¿¬»êÀ» ÀÌ¿ëÇØ¼, ´Ù¾çÇÑ ¹æ½ÄÀ» Á¶ÇÕÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº ´ëÇ¥ÀûÀ¸·Î »ç¿ëµÇ´Â flag µéÀÌ´Ù.
// ÆÄÀÏÀ̸§ hello.txt ¿¡ µ¥ÀÌÅ͸¦ (´ÜÁö)¾²±â À§Çؼ ¿¬´Ù.
// ÆÄÀÏÀÌ ¾øÀ» °æ¿ì »ý¼ºÇϸç
// ±ÇÇÑÀº 640 À¸·Î ÇÑ´Ù.
open("hello.txt", O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);
½ÇÁ¦·Î À§ÀÇ ±ÇÇÑÀ¸·Î ÆÄÀÏÀ» ¿ÀÇÂÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ¾Æ·¡ÀÇ ÇÁ·Î±×·¥Àº ´ÜÁö ÆÄÀÏÀ» ¿±â¸¸ ÇÒ »ÓÀÌÁö¸¸ ¼º°øÀûÀ¸·Î ÆÄÀÏÀ» »ý¼ºÇÒ °ÍÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ À̸§Àº hello.c ·Î ÇϰڴÙ. ÇÁ·Î±×·¥ÀÇ ÀÛ¼º°ú ½ÇÇàÀº yundram°èÁ¤À» ÀÌ¿ëÇß´Ù. #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main() { int fd; fd = open("hello.txt", O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP); }ls(1)¸¦ ÀÌ¿ëÇØ¼ hello.txt¸¦ È®ÀÎÇØ º¸µµ·ÏÇÏÀÚ. yundream@yundream:~$ ls -al hello.txt -rw-r----- 1 yundream yundream 0 2007-11-20 20:23 hello.txt¼ÒÀ¯ÀÚ°ú ±×·ìÀÌ yundreamÀ̰í 640ÀÇ ±ÇÇÑÀ» °¡Áö´Â ÆÄÀÏÀÌ »ý¼ºµÇ¾úÀ½À» ¾Ë ¼ö ÀÖ´Ù. ÆÄÀÏÀ» ¿±â¸¸ ÇßÀ» »Ó, ¾Æ¹«·± ÀÛ¾÷À» ÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÇ ÆÄÀÏÀÇ Å©±â´Â 0ÀÌ´Ù. 4.2 file descriptor
open(2) ÇÔ¼ö¸¦ ´Ù½Ã º¸µµ·Ï ÇÏÀÚ. open(2)ÇÔ¼ö´Â ¸®Åϰá°ú·Î ´Ù·ç°ÔµÉ ÆÄÀÏÀÇ À̸§ÀÌ ¾Æ´Ñ intÇü Á¤¼ö¸¦ ³Ñ°ÜÁÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÌ intÇü Á¤¼ö°¡ ¹Ù·Î ÆÄÀÏÀ» °¡¸®Å°´Â ¿ªÇÒÀ» ÇÑ´Ù. ÆÄÀÏÀ» ÁöÁ¤Çϱ⠶§¹®¿¡, file descriptor ȤÀº 'ÆÄÀÏ ÁöÁ¤¹øÈ£¶ó°í ÇÑ´Ù. À̰ÍÀº ¿ì¸®°¡ ÀϹÝÀûÀ¸·Î ¾Ë°í ÀÖ´Â ¼ýÀÚ°¡ ¾Æ´Ñ ¿·ÁÁø ÆÄÀϰ´Ã¼¸¦ °¡¸®Å°´Â °ÍÀÓ¿¡ À¯ÀÇ Çϱ⠹ٶõ´Ù.
open(2)À» ÀÌ¿ëÇØ¼ ÆÄÀÏÀ» ¼º°øÀûÀ¸·Î ¿¾ú´Ù¸é, ÀÌÈÄÀÇ ¸ðµç ¾²±â/Àб⠵îÀÇ ÀÛ¾÷Àº ÆÄÀÏÀ̸§ ´ë½Å ÆÄÀÏÁöÁ¤¹øÈ£¸¦ ÀÌ¿ëÇÏ°Ô µÈ´Ù. +------+ | FILE |<---- file discriptor = open(2) | | +------+ openÀ¸·Î ¸®ÅÏµÈ intÇü Á¤¼ö´Â file discriptor ·Î½á, ¿¸° ÆÄÀÏÀ» °¡¸®Å²´Ù.
ÆÄÀÏÁöÁ¤¹øÈ£´Â 0ÀÌ»óÀÌ¿©¾ß ÇÑ´Ù. 0º¸´Ù ÀÛÀº °æ¿ì´Â ¾î¶²ÀÌÀ¯·Î ÆÄÀÏÀ» ¿©´Â°ÍÀÌ ½ÇÆÐÇßÀ½À» ÀǹÌÇÑ´Ù. À§ÀÇ ÇÁ·Î±×·¥Àº ¾Æ·¡Ã³·³ ÆÄÀÏ ¿À·ù±îÁö °Ë»çÇÏ´Â Á»´õ ±×·²µíÇÑ ÇÁ·Î±×·¥À¸·Î ¹Ù²Ü ¼ö ÀÖÀ» °ÍÀÌ´Ù. fd = open("hello.txt", O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);
if (fd < 0)
{
perror("file open error:");
return 1;
}
5 ÆÄÀÏ¿¡¼ Àбâ
ÆÄÀÏÀ» ¼º°øÀûÀ¸·Î ¿¾ú´Ù¸é, ÀÌÁ¦ Àаųª ¾²´Â µîÀÇ ÀÛ¾÷À» ÇÏ¸é µÈ´Ù. ¿©±â¿¡¼´Â ÆÄÀÏÀ» Àд ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇÒ °ÍÀÌ´Ù. ¿ì¼± ´ÙÀ½ÀÇ ³»¿ëÀ» °¡Áö´Â ¼ÀÇà ÆÄÀÏÀ» Çϳª ÁغñÇϵµ·Ï ÇÏÀÚ. ¿ì¸®´Â ¾Æ·¡ÀÇ ÆÄÀÏÀÇ ³»¿ëÀ» ÀÐ¾î¼ È¸é¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀ¸·Î ÆÄÀÏÀд ¹ý¿¡ ´ëÇØ¼ ¹è¿ï °ÍÀÌ´Ù. ÆÄÀÏÀÇ À̸§Àº fly.txt·Î ÇϰڴÙ. Fly me to the moon And let me play among the stars Let me see what spring is like on Jupiter and Mars In other words hold my hand In other words darling kiss meÀ¯¸íÇÑ fly me to the moon°¡»çÁß ÀϺκÐÀÌ´Ù. ¾î¶² ³ë·¡ÀÎÁö ±Ã±ÝÇÏ´Ù¸é ¸Ó¸®µµ ½ÄÈú°â ¿©±â¸¦ ¹æ¹®ÇØ º¸±â ¹Ù¶õ´Ù.
ÆÄÀÏ¿¡¼ Àбâ À§Çؼ´Â ´ç¿¬È÷ ÀбâÀü¿ë ȤÀº Àбâ/¾²±â »óÅ·ΠÆÄÀÏÀÌ ¿·Á¾ß ÇÑ´Ù. ¿©±â¿¡¼´Â Àбâ Àü¿ë ¸ðµå·Î ¿µµ·Ï ÇÒ°ÍÀÌ´Ù. ¸¸µé¾îÁø ÆÄÀÏÀ» ¿©´Â °ÍÀ̱⠶§¹®¿¡ O_CREAT´Â Çʿ䰡 ¾øÀ» °ÍÀÌ´Ù. ÆÄÀÏÀ» »ý¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ¸ðµå ÀÎÀÚ¿ª½Ã ÇÊ¿ä¾ø´Ù. open ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. fd = open("fly.txt", O_RDONLY); if (fd < 0) { ... }
¼º°øÀûÀ¸·Î ÆÄÀÏÀ» ¿¾ú´Ù¸é fd´Â 0º¸´Ù Å«¼ö°¡ ¸®ÅϵǾúÀ» °ÍÀ̰í, - ´ëºÎºÐÀÇ °æ¿ì 2º¸´Ù Å«¼ö°¡ ¸®Å쵃 °ÍÀÌ´Ù. ÀÌ ÀÌÀ¯´Â ¾Æ·¡¿¡¼ ¼³¸íÇÒ °ÍÀÌ´Ù - ¸®ÅϹÞÀº Á¤¼ö¸¦ ÆÄÀÏÁöÁ¤¹øÈ£·Î »ç¿ëÇÏ°Ô µÈ´Ù. ¿ì¸®´Â ÀÌ ÆÄÀÏÁöÁ¤¹øÈ£¸¦ ÀÌ¿ëÇØ¼ ÆÄÀÏÀÇ ³»¿ëÀ» ÀоîµéÀÌ°Ô µÈ´Ù. 5.1 read ½Ã½ºÅÛÄÝ
¿¸° ÆÄÀÏ·Î ºÎÅÍ µ¥ÀÌÅ͸¦ Àбâ À§Çؼ Á¦°øÇÏ´Â ½Ã½ºÅÛÇÔ¼ö°¡ read(2)ÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ÀÎÀÚ·Î ÁÖ¾îÁø ÆÄÀÏÁöÁ¤¹øÈ£°¡ °¡¸®Å°´Â ÆÄÀÏ·Î ºÎÅÍ, ÁöÁ¤µÈ Å©±â¸¸ÅÀÇ µ¥ÀÌÅ͸¦ ÀоîµéÀÌ°Ô µÈ´Ù. ´ÙÀ½Àº read(2) ÇÔ¼öÀÇ ¿øÇüÀÌ´Ù. #include <unistd.h> size_t read(int fd, void *buf, size_t count);
int readn = 0; int fd; char buf[80]; fd = open(...); memset(buf, 0x00, 80); while( (readn = read(fd, buf, 79) ) { // ÀоîµéÀÎ µ¥ÀÌÅͰ¡ ÀÖ´Â buf¸¦ ÀÌ¿ëÇØ¼ ÇÊ¿äÇÑ ÀÛ¾÷À» ÇÑ´Ù. memset(buf, 0x00, 80); }
ÁÖÀÇÇØ¾ßÇÒ Á¡Àº µ¥ÀÌÅͰ¡ ÀúÀåµÇ´Â buf¸¦ memset(3) ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÃʱâÈ ½ÃÄÑÁà¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. read ÇÔ¼ö´Â count¸¸Å µ¥ÀÌÅ͸¦ Àоîµé¿©¼ buf¿¡ º¹»çÇϱ⸸ ÇÒ»Ó, ³»¿ëÀ» ÃʱâÈ ½ÃŰ±â ¾Ê±â ¶§¹®ÀÌ´Ù. ¿¹¸¦µé¾î ÀÌÀü¿¡ 79byte¸¦ Àоîµé¿´°í, À̹ø¿¡ ÀоîµéÀÎ µ¥ÀÌÅͰ¡ 20byte¿´´Ù¸é, 21byte ÀÌÈÄÀÇ ÀÌÀü µ¥ÀÌÅͰ¡ ±×´ë·Î ³²¾Æ ÀÖ¾î¼ À߸ø ó¸®ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¹°·Ð readÀÇ ¸®ÅϰªÀ» ÀÌ¿ëÇØ¼ 20byte¸¦ Àоî¿Ô´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ¸¹Ç·Î ÁÖÀÇÇØ¼ ó¸®ÇÏ¸é µÇ±ä ÇϰÚÁö¸¸ ½Ç¼öÇÒ ¸¸ÇÑ ¿©Áö´Â ¹Ì¸® Á¦°ÅÇÏ´Â°Ô ÁÁÀ» °ÍÀÌ´Ù.
¾Æ·¡ÀÇ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ º¸±â ¹Ù¶õ´Ù. ÇÁ·Î±×·¥ÀÇ À̸§Àº fly.c·Î ÇÏÀÚ. ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ º¸¸é, ¸¶Áö¸·¿¡ ´ÙÀ½°ú °°ÀÌ ÀÌÀü¿¡ ÀоîµéÀÎ °ªÀÌ Ãâ·ÂµÇ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Fly me to the moon And let me play among the stars Let me see what spring is like on Jupiter and Mars In other words hold my hand In other words darling kiss me on Jupiter and Mars In other words hold my hand ...
ÀÌÁ¦ 21ÁÙ ´ÙÀ½¿¡ memset(buf, 0x00, MAXLEN); À» Ãß°¡ÇÏ°í³ª¼ ´Ù½Ã ½ÇÇà½ÃÄÑ º¸µµ·Ï ÇÏÀÚ. ¹®Á¦¾øÀÌ ±ò²ûÇÏ°Ô Ãâ·ÂµÇ´Â°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
¶ÇÇϳª Äڵ忡¼ ±Ã±ÝÇÑÁ¡ÀÌ ÀÖÀ» °ÍÀÌ´Ù. read ¿¡¼ ¹öÆÛÀÇ ÃÖ´ëÅ©±âÀÎ MAXLEN ¸¸ÅÀ» ÀоîµéÀÌÁö ¾Ê°í MAXLEN-1 ¸¸ÅÀ» ÀоîµéÀÌ´Â Á¡ÀÌ´Ù. ÀÌ´Â ¿ª½Ã ¹öÆÛÀÇ Å©±â¸¦ ³Ñ¾î¼¼ µ¥ÀÌÅ͸¦ Àоî¹ö¸®´Â ¸¸¾àÀÇ ½Ç¼ö¸¦ ¸·±â À§ÇÔÀÌ´Ù. printf(3)ÇÔ¼öÀÇ °æ¿ì ³Î¹®ÀÚ('\0')¸¦ ¸¸³ª±â Àü±îÁö µ¥ÀÌÅ͸¦ ÀоîµéÀÌ°Ô µÈ´Ù. ¹öÆÛ¸¦ °¡µæÃ¤¿ö¼ Àоîµé¿´´Âµ¥, ¹öÆÛ¸Þ¸ð¸® ¿µ¿ªÀÇ ¸¶Áö¸·ÀÌ '\0'ÀÌ ¾Æ´Ò °æ¿ì ³¡ÀÌ ¾Æ´Ï¶ó°í ÆÇ´ÜÇØ¼, '\0'À» ¸¸³¯¶§±îÁö ¸Þ¸ð¸®¿µ¿ªÀ» ¹þ¾î³ª¼ °è¼Ó ÀÐ¾î ¹ö¸®´Â ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ±×·¯ÇÏ´Ï ¹öÆÛÀÇ ¸¶Áö¸·¶óÀÎÀ» '\0'À¸·Î ¸¸µé¾î ¹ö¸®´Â°Ô ±ò²ûÇÏ´Ù. 01 ... 89 80 +-------+--+--+--------------------------+ | ..... | | | '\0'ÀÌ ¾Æ´Ñ ¾Ë¼ö ¾ø´Â °ª | +-------+--+--+--------------------------+ |<--- buf --->|
ÀÌ °æ¿ì¿¡µµ ÀоîµéÀÎ µ¥ÀÌÅÍÀÇ Å©±â¸¦ ¾Ë ¼ö Àֱ⠶§¹®¿¡ snprintf()¿Í °°Àº ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¸Áö¸¸ °¡´ÉÇÑ ¹®Á¦ ¹ß»ý ¿©Áö¸¦ ¾ø¾Ö´Â ÂÊÀ¸·Î ÄÚµùÀ» ÇÏ´Â°Ô ÁÁÀ» °ÍÀÌ´Ù.
±×·¸´Ù°í ÇØ¼, ¸ðµç °æ¿ì¿¡ ÀÖ¾î¼ ¹®Á¦°¡ µÇ´Â°Ç ¾Æ´Ï´Ù. ÆÄÀϷκÎÅÍ ÀоîµéÀÏ µ¥ÀÌÅͰ¡ char, int ¿Í °°Àº ¿ø½Ãµ¥ÀÌÅÍ Å¸ÀÔÀÏ °æ¿ì¿¡´Â Å©±â°¡ ¸íÈ®È÷ ¸í½ÃµÇ¹Ç·Î À§¿¡¼¿Í °°Àº ÃʱâÈ °ü·ÃµÈ ¹®Á¦°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. 5.2 ¹öÆÛ°ø°£ÀÇ Å©±â
buffer°¡ »ç¿ëµÇ´Â ÀϹÝÀûÀÎ ÀÌÀ¯´Â ÀâÀ½À» ¾ø¾Ö°í ¼º´ÉÀ» ³ôÀ̱â À§ÇÔÀÌ´Ù. ÀоîµéÀÏ µ¥ÀÌÅͰ¡ 1024 ¸¸ÅÀÌ ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ. ¹öÆÛÀÇ Å©±â¸¦ 1·Î Àâ¾Ò´Ù¸é, read(2) ÇÔ¼ö¸¦ 1024¹ø È£ÃâÇØ¾ß µÉ°ÍÀÌ´Ù. ¸¸¾à ¹öÆÛÀÇ Å©±â¸¦ 512·Î Àâ´Â´Ù¸é, ´Ü 2¹ø¸¸ read(2)ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÉ °ÍÀÌ´Ù. ÈÄÀÚ°¡ ´õ È¿À²ÀûÀÏ °Å¶ó´Â °ÍÀº ºÐ¸íÇÏ´Ù.
±×·¸´Ù°í ÇØ¼ ¹«ÀÛÁ¤ ¸Þ¸ð¸®¸¦ Å©°ÔÀâ´Â °Íµµ ³¶ºñ´Ù. ½Ã°£°ú ºñ¿ëÀÌ °ü·ÃµÈ ´ëºÎºÐÀÇ Çö»óÀÌ ±×·¸µíÀÌ ¾î´ÀÁ¤µµ Å©±â°¡ Áö³ª¸é ¼º´ÉÀÇ Áõ°¡ÆøÀÌ ÁÙ¾îµå´Â ÁöÁ¡ÀÌ ¿À±â ¶§¹®ÀÌ´Ù. Àû´çÇÑ ¼±¿¡¼ Æ®·¹À̵å¿ÀÇÁ ÇØ¾ßÇÒ Çʿ䰡 ÀÖ´Ù.
¾î¶² µ¥ÀÌÅ͸¦ ó¸®ÇÏ´À³Ä¿¡ µû¶ó´Ù¸£°ÚÁö¸¸ 512byte³ª 1024byteÁ¤µµÀÇ Å©±â·Î ÇÏ´Â°Ô ¹«³ÇÏ´Ù°í ¾Ë·ÁÁ® ÀÖ´Ù. 6 ÆÄÀÏ¿¡ ¾²±â
ÆÄÀÏ¿¡ µ¥ÀÌÅ͸¦ ¾²±â À§Çؼ´Â ¾²±âÀü¿ë ȤÀº Àбâ/¾²±â °¡´É¸ðµå·Î ¿¾î¾ß ÇÑ´Ù. ¸®´ª½º Ä¿³ÎÀº ¾²±â¿äûÀ» À§ÇÑ write(2) ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. #include <unistd.h> ssize_t write(int fd, const void *buf, size_t count);ÀÌ ÇÔ¼ö´Â buf¿¡ ÀÖ´Â ³»¿ëÀ» count Å©±â¸¸Å ÆÄÀÏÁöÁ¤¹øÈ£ fd°¡ °¡¸®Å°´Â ÆÄÀÏ¿¡ ¾µ °ÍÀ» Ä¿³Î¿¡ ¿äûÇÑ´Ù. ¼º°øÇÏ°Ô µÇ¸éÀº ¾´ byte Å©±â¸¸ÅÀ» ¸®ÅÏÇÑ´Ù.
´ÙÀ½Àº data.txt ÆÄÀÏÀ» ¿¾î¼ intÇü µ¥ÀÌÅ͸¦ ¾²´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥ÀÇ À̸§Àº write.c·Î ÇϰڴÙ. 001 #include <fcntl.h> 002 #include <unistd.h> 003 #include <stdio.h> 004 #include <string.h> 005 006 int main() 007 { 008 int fd; 009 int i; 010 int wdata = 0; 011 int wsize = 0; 012 fd = open("data.txt", O_CREAT|O_WRONLY); 013 if (fd < 0) 014 { 015 perror("file open error"); 016 return 1; 017 } 018 019 for (i = 0; i < 100; i++) 020 { 021 wdata = i * 2; 022 wsize = write(fd, (void *)&wdata, sizeof(int)); 023 printf("Write %d (%d byte)\n", i*2); 024 } 025 close(fd); 026 } 027
22ÁÙÀ» ÁÖÀDZí°Ô »ìÆìº¸µµ·Ï ÇÏÀÚ. fd¿¡ intÇü º¯¼öÀÎ wdata¿¡ ÀúÀåµÈ °ªÀ» ¾²·Á°íÇϰí ÀÖ´Ù. wdata´Â intÇü µ¥ÀÌÅÍÀ̱⠶§¹®¿¡, void *ÇüÀ¸·Î Çüº¯È¯À» Çß´Ù. ¸¶Áö¸·À¸·Î sizeof ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¾²°íÀÚ ÇÏ´Â µ¥ÀÌÅÍÀÇ Å©±â¸¦ ±¸Çؼ, writeÀÇ 3¹øÂ° ÀÎÀÚ·Î µÇµ¹·Á Áá´Ù. int µ¥ÀÌÅÍ Å¸ÀÔÀÇ Å©±â´Â 4byte¶ó´Â °ÍÀ» ÀÌ¹Ì ¾Ë°í Àֱ⠶§¹®¿¡, sizeof¸¦ ¾²Áö ¾Ê°í 4¸¦ Á÷Á¢ ¸í½ÃÇØµµ µÉ °ÍÀÌ´Ù.
±×·¯³ª ¾î¶² ¿î¿µÃ¼Á¦¿Í ÄÄÆÄÀÏ·¯ÀÇ È¯°æ¿¡ µû¶ó¼ int°¡ 2byte ȤÀº 8byte°¡ µÇ´Â °æ¿ìµµ ÀÖ´Ù. ±×·¯¹Ç·Î À̽ļºÀ» °í·ÁÇÑ´Ù¸é sizeof ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ µ¥ÀÌÅÍŸÀÔÀÇ Å©±â¸¦ ¾ò¾î³»´Â ¹æ¹ýÀ» »ç¿ëÇÏ´Â°É ±ÇÀåÇÑ´Ù.
ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇÏ°í ½ÇÇà½ÃŰ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. # gcc -o write write.c # ./write Write 0 (4 byte) Write 2 (4 byte) Write 4 (4 byte) Write 6 (4 byte) Write 8 (4 byte)ls·Î data.txt ÆÄÀÏÀÌ »ý¼ºµÈ°É º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ÆÄÀÏÀÇ ³»¿ëÀ» »ìÆìº¸±â À§Çؼ vi·Î ¿¾îµµ ³»¿ëÀ» ¾Ë¾Æº¼ ¼ö´Â ¾øÀ» °ÍÀÌ´Ù. ÀÌ ÆÄÀÏÀÇ ³»¿ëÀº ASCII printable µ¥ÀÌÅÍ - ÈçÈ÷ ¸»ÇÏ´Â ¹®ÀÚµ¥ÀÌÅÍ - °¡ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. 7 ÆÄÀÏ ´Ý±â
¿¸° ÆÄÀÏÀ» ´õÀÌ»ó ¾²Áö ¾Ê´Â´Ù¸é, ´Ý¾ÆÁÖ¾î¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ»°æ¿ì ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ¶§±îÁö, °è¼Ó ³²¾Æ¼ ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÇ ÀÚ¿øÀ» ¼ÒºñÇÏ°Ô µÈ´Ù. ÆÄÀÏÀÇ Á¾·á´Â close(2) ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. #include <unistd.h> int close(int fd); 8 ¿ø½Ã µ¥ÀÌÅÍŸÀÔÀÇ µ¥ÀÌÅÍ¿Í ±¸Á¶Ã¼µ¥ÀÌÅÍ ÀÐ°í ¾²±â
±×·³ ¹Ù·Î À§¿¡¼ ´Ù·é data.txt¿¡ ÀúÀåµÈ intÇü Á¤º¸¸¦ ÀÐ¾î¼ È¸é¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸µµ·Ï ÇÏÀÚ. ÇÁ·Î±×·¥ÀÇ È帧Àº °£´ÜÇÏ´Ù. data.txt ¸¦ ÀбâÀü¿ë À¸·Î ¿¬´ÙÀ½ read(2) ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ 4byte¾¿ ÀоîµéÀδÙ. ÀоîµéÀÎ µ¥ÀÌÅÍ´Â printf(3) ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ȸ鿡 Ãâ·ÂÇÏ¸é µÈ´Ù. 001 #include <stdlib.h> 002 #include <stdio.h> 003 #include <sys/types.h> 004 #include <sys/stat.h> 005 #include <fcntl.h> 006 007 #define MAXLEN 80 008 int main() 009 { 010 int fd; 011 int readn = 0; 012 int buf; 013 fd = open("data.txt", O_RDONLY); 014 if (fd < 0) 015 { 016 perror("file open error:"); 017 return 1; 018 } 019 while( (readn = read(fd, (void *)&buf, sizeof(buf) )) > 0) 020 { 021 printf("Read Data : %d\n", buf); 022 } 023 } 024fly.c¿Í ´Þ¶óÁø Á¡Àº 19ÁÙ Á¤µµ´Ù. ÀÐÀ» Á¤º¸°¡ intÇü µ¥ÀÌÅÍ À̹ǷÎ, intÇü µ¥ÀÌÅÍŸÀÔÀÇ Å©±â¸¸Å - ´ëºÎºÐÀÇ °æ¿ì 4byteÀÏ °ÍÀÌ´Ù - ÀÐ¾î¼ buf¿¡ º¹»çÇϰí ÀÖ´Ù. ÀоîµéÀÎ Á¤º¸´Â 21ÁÙ¿¡¼ print¸¦ ÅëÇØ¼ Ãâ·ÂÀ» Çß´Ù.
ÀÌ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŰ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©ÁÙ °ÍÀÌ´Ù. # ./read Read Data : 0 Read Data : 2 Read Data : 4 Read Data : 6 Read Data : 8 ...
¹®ÀÚ¿ µ¥ÀÌÅÍÀ̵çÁö ¾Æ´Ï¸é int Çü ¼ýÀÚ µ¥ÀÌÅÍÀ̵çÁö°£¿¡ ÄÄÇ»ÅÍÀÇ ÀÔÀå¿¡¼´Â ºñÆ®ÀÇ ³ª¿ÀÏ »ÓÀÓÀ» ¸í½ÉÇÒ Çʿ䰡 ÀÖ´Ù. ´ÜÁö Ç¥ÇöÀÇ Â÷ÀÌÀ» »ÓÀÌ´Ù. ¶È°°Àº ºñÆ®ÀÇ ³ª¿ÀÌ¶óµµ ¹®ÀÚ¿·Î Ç¥ÇöÇϰíÀÚ ÇÏ¸é ¹®ÀÚ¿ÀÌ µÇ´Â °Å°í, ¼ýÀڷΠǥÇöÇϰíÀÚ ÇÏ¸é ¼ýÀÚ·Î ÆìÇöµÈ´Ù. 8.1 Á»´õ º¹ÀâÇÑ ±¸Á¶Ã¼ µ¥ÀÌÅÍ ÀÐ°í ¾²±â
ÄÄÇ»ÅÍ °üÁ¡¿¡¼ ¸ðµç µ¥ÀÌÅÍ´Â µ¿ÀÏÇÑ bitÀÇ ³ª¿ÀÏ »ÓÀ̶ó´Â°É ÀÌÇØÇÑ´Ù¸é, ±¸Á¶Ã¼¸¦ ÀÐ°í ¾²´Â °Í ¿ª½Ã ÀüÇô ¹®Á¦µÉ°Ô ¾ø´Ù. ´ëºÎºÐÀÇ °í¼öÁØ ÀÀ¿ë ÇÁ·Î±×·¥À̶ó¸é ¹®ÀÚ¿À̳ª int, long°ú °°Àº ¿ø½Ãµ¥ÀÌÅÍŸÀÔ º¸´Ù´Â ±¸Á¶Ã¼ µ¥ÀÌÅ͸¦ ÀÐ°í ¾²µµ·Ï µÇ¾î ÀÖ´Ù.
À¯ÀúÁ¤º¸¸¦ ÀúÀåÇϰí Àд °£´ÜÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù°í °¡Á¤Çغ¸ÀÚ. ÇϳªÀÇ À¯Àú¸¦ ³ªÅ¸³»±â À§Çؼ ÇÊ¿äÇÑ Á¤º¸´Â ´ÙÀ½°ú °°´Ù°í °¡Á¤Çغ¸ÀÚ. À̸§ ³ªÀÌ ¼ºº° Ãë¹ÌÇÁ·Î±×·¡¸Ó´Â ´ë·« ´ÙÀ½°ú °°Àº ±¸Á¶Ã¼¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. ±¸Á¶Ã¼´Â µ¥ÀÌÅ͸¦ ·¹ÄÚµå ´ÜÀ§·Î °ü¸®ÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁֱ⠶§¹®ÀÌ´Ù. struct userInfo
{
char name[28];
int age;
int sex;
char hobb6[28];
};
±×·³ À§ÀÇ ±¸Á¶Ã¼ Á¤º¸¸¦ ÀúÀåÇÏ´Â °£´ÜÇÑ À¯ÀúÁ¤º¸ °ú¸®ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. Á¦´ë·Î ¸¸µé·Á°í Çϸé, °¢ ±¸Á¶Ã¼º¯¼ö µ¥ÀÌÅ͸¦ ÀԷ¹ޱâ À§È¯ ÀÎÅÍÆäÀ̽º±îÁö ¸¸µé¾î¾ß °ÚÁö¸¸ »ý·«Çϵµ·Ï ÇÒ °ÍÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº µÞºÎºÐ¿¡¼ »ç¿ëÀÚ ÀÔ·ÂÀ» ¹ÞÀ» ¼ö ÀÖµµ·Ï È®ÀåµÉ °ÍÀÌ´Ù.
Å×½ºÆ®¸¦ À§Çؼ Àбâ¿Í ¾²±â¸¦ Àü´ãÇÏ´Â 2°³ÀÇ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ °ÍÀÌ´Ù. ¿ì¼± ¾²±â ÇÁ·Î±×·¥ÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥ÀÇ À̸§Àº UserInfoWrite.c ·Î ÇϰڴÙ. 001 nclude <stdlib.h>
002 #include <sys/types.h>
003 #include <sys/stat.h>
004 #include <fcntl.h>
005 #include <string.h>
006 #include <stdio.h>
007
008 struct userInfo
009 {
010 char name[28];
011 int age;
012 int sex;
013 char hobby[28];
014 };
015
016 void makeUserInfo(struct userInfo *uinfo,
017 char *name, // À̸§
018 int age, // ³ªÀÌ
019 int sex, // ¼º (³²: 0, ¿©: 1)
020 char *hobby) // Ãë¹Ì
021 {
022 memset((void *)uinfo, 0x00, sizeof(struct userInfo));
023 strcpy(uinfo->name, name);
024 uinfo->age = age;
025 uinfo->sex = sex;
026 strcpy(uinfo->hobby, hobby);
027 }
028
029 int main()
030 {
031 int fd;
032 struct userInfo myAddrBook;
033 fd = open("hello.txt", O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);
034 if (fd < 0)
035 {
036 perror("file open error");
037 return 1;
038 }
039
040 makeUserInfo((void *)&myAddrBook, "yundream", 19, 0, "ÇÁ·Î±×·¡¹Ö");
041 write(fd, (void *)&myAddrBook, sizeof(myAddrBook));
042
043 makeUserInfo((void *)&myAddrBook, "hello", 22, 1, "°ÔÀÓ");
044 write(fd, (void *)&myAddrBook, sizeof(myAddrBook));
045
046 makeUserInfo((void *)&myAddrBook, "µå¶ó°í³Ê", 33, 1, "»ç³É");
047 write(fd, (void *)&myAddrBook, sizeof(myAddrBook));
048
049 close(fd);
050 return 0;
051 }
052
À¯ÀúÁ¤º¸¿Í À¯ÀúÁ¤º¸¿Í À¯ÀúÁ¤º¸ ±¸Á¶Ã¼ÀÎ userInfo¸¦ ³Ñ±â¸é, ±¸Á¶Ã¼¸¦ ü¿ì´Â makeuserInfo¶ó´Â ÇÔ¼ö¸¦ ¸¸µé¾ú´Ù. ÇöÀç´Â ÇÁ·Î±×·¥»ó¿¡ Á÷Á¢ À¯ÀúÁ¤º¸¸¦ Áý¾î ³Ö¾úÁö¸¸ ³ªÁß¿¡´Â Űº¸µå·Î ÀԷ¹ÞÀ» ¼ö ÀÖµµ·Ï ÇÒ °ÍÀÌ´Ù.
40 ~ 47¿¡¼ À¯ÀúÁ¤º¸ ±¸Á¶Ã¼ myAddrBookÀ» ÆÄÀÏ¿¡ ¾²°í ÀÖ´Ù. intÇüµ¥ÀÌÅÍ char Çü µ¥ÀÌÅ͸¦ ¾²´Â °Í°ú ¹ß´Ù¸¦°Ô ¾øÀ½À» ¾Ë ¼ö ÀÖ´Ù. ÄÄÇ»ÅÍÀÇ ÀÔÀå¿¡¼´Â intÇü µ¥ÀÌÅÍÀ̵çÁö char Çü µ¥ÀÌÅÍÀ̵çÁö °£¿¡ ºñÆ®ÀÇ ³ª¿ÀÏ »ÓÀÓÀ¸·Î ±Ùº»ÀûÀ¸·Î ´Ù¸¦°Ô ¾ø±â ¶§¹®ÀÌ´Ù. ¸î¹ÙÀÌÆ®ÀÇ Á¤º¸¸¦ ÀúÀåÇÒ °ÍÀÎÁö¿¡ ´ëÇÑ ÀúÀåÅ©±â¿¡¸¸ Â÷À̰¡ ÀÖÀ» »ÓÀÌ´Ù.
´ÙÀ½Àº hello.txt¿¡ ÀúÀåµÈ À¯ÀúÁ¤º¸¸¦ Àоîµé¿©¼ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ À̸§Àº UserInfoRead.c ·Î ÇϰڴÙ. 001 #include <stdlib.h>
002 #include <sys/types.h>
003 #include <sys/stat.h>
004 #include <fcntl.h>
005 #include <string.h>
006 #include <stdio.h>
007
008 struct userInfo
009 {
010 char name[28];
011 int age;
012 int sex;
013 char hobby[28];
014 };
015
016 int main()
017 {
018 int fd;
019 struct userInfo myAddrBook;
020 int dataSize;
021 fd = open("hello.txt", O_RDONLY);
022 if (fd < 0)
023 {
024 perror("file open error");
025 return 1;
026 }
027
028 dataSize = sizeof(myAddrBook);
029 printf("User Info =====================\n\n");
030 while(read(fd, (void *)&myAddrBook, dataSize) == dataSize)
031 {
032 printf("name : %s\n", myAddrBook.name);
033 printf("age : %d\n", myAddrBook.age);
034 printf("sex : %d\n", myAddrBook.sex);
035 printf("hobby : %s\n", myAddrBook.hobby);
036 printf("===============================\n");
037 }
038 close(fd);
039 return 0;
040 }
041
µ¥ÀÌÅ͸¦ Àб⸸ ÇÒ °ÍÀ̱⠶§¹®¿¡, O_RDONLY¸¦ »ç¿ëÇß´Ù. ´ÙÀ½ while¹®À» µ¹¸é¼ userInfo ±¸Á¶Ã¼ÀÇ Å©±â¸¸Å, ÆÄÀÏ·Î ºÎÅÍ µ¥ÀÌÅ͸¦ Àоîµé¿©¼ myAddrBook¿¡ ÀúÀåÇϰí ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. 9 ÆÄÀÏÀÇ ±ÇÇѰú ¸ðµå
¸®´ª½º´Â ´ÙÁß»ç¿ëÀÚ ¿î¿µÃ¼Á¦À̸ç, ¶§¹®¿¡ ¸ðµçÆÄÀÏ¿¡´Â ±ÇÇÑÀÌ ºÎ¿©µÈ´Ù. ¸®´ª½º»ó¿¡¼´Â ¸ðµç °ÍÀÌ ÆÄÀϷΠǥÇöµÇ±â ¶§¹®¿¡, ÆÄÀÏ¿¡ ±ÇÇÑÀ» ºÎ¿©ÇÑ´Ù´Â ¾ê±â´Â ¿î¿µÃ¼Á¦¿Í ÄÄÇ»ÅÍÀÇ ¸ðµç °Í¿¡ ´ëÇÑ ±ÇÇÑÀÌ ºÎ¿©µÉ ¼ö ÀÖ´Ù´Â °Í°ú ¸¶Âù°¡Áö°¡ µÈ´Ù.
¿¹ÄÁµ¥ ±ÇÇÑÀ̶óÇÔÀº ÀÌÆÄÀÏÀº ³»°ÍÀÌ¸ç ³ª¸¸ ÀÐÀ» ¼ö ÀÖ´Ù¶óµçÁö ½ºÅ͵ð ±×·ì¿¡ Æ÷ÇÔµÈ »ç¶÷µéÀº ÀÐÀ» ¼ö ÀÖÁö¸¸ ´Ù¸¥ »ç¶÷µéÀº ÀÐÀ» ¼ö ¾ø´Ùµî°ú °°Àº Á¢±Ù ±ÇÇÑÀ» ¸»ÇÑ´Ù. ¿©±â¿¡ Á¢±Ù±ÇÇÑ ¿Ü¿¡µµ Àбâ¿Í ¾²±â °¡´É¿¡ ´ëÇÑ ÇàÀ§±îÁö ¼¼ºÎÀûÀ¸·Î ºÐ·ùÇÒ ¼ö ÀÖ´Ù. Çö½Ç¿¡¼¿Í ¸¶Âù°¡Áö´Ù. Çö½Ç¿¡¼µµ Á÷À§³ª Á÷Ã¥, ºÎ¼¿¡ µû¶ó¼ ¹®¼¿¡ ´ëÇÑ Á¢±Ù±ÇÇÑÀÌ Á¤ÇØÁ® ÀÖÀ¸¸ç, Àбâ¿Í ¾²±â¿¡ ´ëÇÑ ÇàÀ§µµ Á¤ÀǵȴÙ.
Á¤¸®ÇÏÀÚ¸é ÆÄÀÏ¿¡ ´ëÇÑ ¼ÒÀ¯ÀÚ°¡ ´©±¸Àΰ¡¿¡ ´ëÇÑ °ÍÀÌ ±ÇÇÑÀ̰í, ±ÇÇÑÀ» °¡Áø »ç¿ëÀÚ¿¡ ´ëÇÑ Àбâ/¾²±â¿¡ ´ëÇÑ °¡´ÉÇÑ Á¢±Ù¹üÀ§°¡ ¸ðµåÀÌ´Ù.
¸®´ª½º ¿î¿µÃ¼Á¦ÀÇ ÆÄÀÏÀº Àбâ¿Í ¾²±â¿Ü¿¡ ½ÇÇà¿¡ ´ëÇÑ ¸ðµåµµ °¡Áö°í ÀÖ´Ù´Â°Ô Çö½Ç¼¼°è¿¡¼ÀÇ ¹®¼½Ã½ºÅÛ°ú ´Ù¸¥Á¡À̶ó ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÆÄÀÏ¿¡ ´ëÇÑ ±ÇÇÑÀº ¼ÒÀ¯ÀÚ, ±×·ì, other ¼¼ºÎºÐÀ¸·Î ³ª´¶´Ù. ¼ÒÀ¯ÀÚ´Â °³ÀÎÀ̶ó°í »ý°¢ÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏ¿¡ ´ëÇÑ ¸ðµå´Â À§¿¡¼ ¾ð±ÞÇßµíÀÌ Àбâ,¾²±â,½ÇÇà 3°³·Î ¼¼ºÐÈ µÉ ¼ö ÀÖ´Ù. À̵éÀÇ Á¶ÇÕÀ¸·Î ÆÄÀÏÀÇ ±ÇÇѰú ¸ðµå°¡ Á¤ÀÇ µÈ´Ù.
¿ì¸®´Â ls¸¦ ÅëÇØ¼ ÆÄÀÏÀÇ ±ÇÇѰú ¸ðµå¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. # ls -al -rw-r--r-- 1 yundream yundream 4806656 2006-07-28 14:00 My_sweet_darlin.mp3 drwxr-xr-x 5 yundream yundream 4096 2007-07-29 01:26 PicasaDocuments -rwxr-xr-x 1 yundream yundream 7402 2007-11-26 00:01 UserInfoRead -rw-r--r-- 1 yundream yundream 751 2007-11-26 00:02 UserInfoRead.c -rwxr-xr-x 1 yundream yundream 7433 2007-11-25 23:33 UserInfoWrite -rw-r--r-- 1 yundream yundream 1087 2007-11-25 23:56 UserInfoWrite.c drwxr-xr-x 2 yundream yundream 4096 2007-07-31 23:51 backup
ÆÄÀÏÀÇ ±ÇÇѰú ¸ðµå¿¡ ´ëÇÑ ³»¿ëÀº ¸®´ª½º ȯ°æ¿¡¼ÀÇ C ÇÁ·Î±×·¡¹Ö¿¡¼ ÀÚ¼¼È÷ ¾ð±ÞÇϰí ÀÖÀ¸´Ï Âü°í¹Ù¶õ´Ù. ¿©±â¿¡¼´Â ÀÌÁ¤µµ·Î¸¸ ¼³¸íÇÏ°í ´ÙÀ½À¸·Î ³Ñ¾î°¡µµ·Ï ÇϰڴÙ. 10 ÆÄÀÏÀÇ Á¾·ù¿Í ±ÇÇÑ,¸ðµå ¾Ë¾Æ³»±â
¸ðµç °ÍÀÌ ÆÄÀϷΠǥÇöµÉ ¼ö ÀÖ´Ù´Â Á¡°ú ´ÙÁß»ç¿ëÀÚ ¿î¿µÃ¼Á¦¶ó´Â ¸®´ª½º ¿î¿µÃ¼Á¦ÀÇ Æ¯¼º»ó ÆÄÀÏÀÇ Á¾·ù¿Í ±ÇÇÑ,¸ðµå¸¦ ¾Ë¾Æ³»´Â °ÍÀº ¸Å¿ì Áß¿äÇÏ´Ù. ÆÄÀÏÀ» ´Ù·ç´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ °æ¿ì °¡Àå ¸ÕÀúÇÏ´Â ÀÏÀÌ Á¢±Ù°¡´ÉÇÑ ÆÄÀÏÀÎÁö¸¦ È®ÀÎÇÏ´Â ÀÏÀÌ´Ù. ¸®´ª½º´Â ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò¾î¿Ã ¼ö ÀÖ´Â stat¶ó´Â ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. #include struct stat {
dev_t st_dev; /* device */
ino_t st_ino; /* inode */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device type (if inode device) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for filesystem I/O */
blkcnt_t st_blocks; /* number of blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
};
ÁÖ¼®À» º¸´Â Á¤µµ·Î °¢ ¸â¹öº¯¼ö°¡ ÀǹÌÇÏ´Â ¹Ù¸¦ ½±°ÔÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¯´Ï ¸î°³ »ý¼ÒÇÑ ¸â¹öº¯¼öµé¸¸À» ¼³¸íÇϵµ·Ï ÇϰڴÙ.
´ÙÀ½Àº ÆÄÀÏÀÇ °¢Á¾ Á¤º¸¸¦ Àоî¿À´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ À̸§Àº stat.c·Î ÇϰڴÙ. #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> #include <pwd.h> #include <grp.h> int main(int argc, char **argv) { int return_stat; char *file_name; struct stat file_info; mode_t file_mode; if (argc != 2 ) { printf("Usage : ./file_info [file name]\n"); exit(0); } file_name = argv[1]; if ((return_stat = stat(file_name, &file_info)) == -1) { perror("Error : "); exit(0); } file_mode = file_info.st_mode; printf("ÆÄÀÏÀ̸§ : %s\n", file_name); printf("=======================================\n"); printf("ÆÄÀÏ Å¸ÀÔ : "); if (S_ISREG(file_mode)) { printf("Á¤±ÔÆÄÀÏ\n"); } else if (S_ISLNK(file_mode)) { printf("½Éº¼¸¯ ¸µÅ©\n"); } else if (S_ISDIR(file_mode)) { printf("µð·ºÅ丮\n"); } else if (S_ISCHR(file_mode)) { printf("¹®ÀÚ µð¹ÙÀ̽º\n"); } else if (S_ISBLK(file_mode)) { printf("ºí·° µð¹ÙÀ̽º\n"); } else if (S_ISFIFO(file_mode)) { printf("FIFO\n"); } else if (S_ISSOCK(file_mode)) { printf("¼ÒÄÏ\n"); } printf("OWNER : %d\n", file_info.st_uid); printf("GROUP : %d\n", file_info.st_gid); printf("dev : %d\n", file_info.st_dev); printf("inode : %d\n", file_info.st_ino); printf("FILE SIZE IS : %d\n", file_info.st_size); printf("¸¶Áö¸· ÀÐÀº ½Ã°£ : %d\n", file_info.st_atime); printf("¸¶Áö¸· ¼öÁ¤ ½Ã°£ : %d\n", file_info.st_mtime); printf("Çϵ帵ũµÈ ÆÄÀϼö : %d\n", file_info.st_nlink); }
Å×½ºÆ® »ï¾Æ¼ stat.c ¿¡ ´ëÇÑ Á¶»ç¸¦ ÇØº¸ÀÚ. $ ./stat stat.c ÆÄÀÏÀ̸§ : stat.c ======================================= ÆÄÀÏ Å¸ÀÔ : Á¤±ÔÆÄÀÏ OWNER : 1000 GROUP : 1000 dev : 2051 inode : 6603353 FILE SIZE IS : 1692 ¸¶Áö¸· ÀÐÀº ½Ã°£ : 1196074251 ¸¶Áö¸· ¼öÁ¤ ½Ã°£ : 1196074249 Çϵ帵ũµÈ ÆÄÀϼö : 2 10.1 hard link¿Í symbolic link
¹Ù·Î À§¿¡¼ link(ÀÌÇÏ ¸µÅ©)°¡ ¸î¹ø ¾ð±ÞµÇ¾ú¾ú´Ù. ÀÌ ¸µÅ©¿¡ ´ëÇØ¼ ÀÚ¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.
¸µÅ©´Â ÆÄÀÏÀ» °¡¸®Å°´Â ÀÏÁ¾ÀÇ º°ÄªÀ¸·Î ÁÖ·Î °ü¸®ÀÇ ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ¿ÀÇ¿ÀÇǽºÀÇ ¹®¼ ÇÁ·Î±×·¥À» ½ÇÇà½Ã۱â À§Çؼ /usr/local/openoffice/bin/openoffice_swrite¸¦ ½ÇÇà½ÃÄÑ¾ß ÇÑ´Ù°í °¡Á¤Çغ¸ÀÚ. À̰бâ¾ïÇØ¼ ¼öÇà½Ãų·Á¸é º¸Åë °ï¿å½º·¯¿î ÀÏÀÌ ¾Æ´Ò °ÍÀÌ´Ù. ÀÌ °æ¿ì ¸µÅ©¸¦ ÀÌ¿ëÇØ¼ °£´ÜÇÏ°Ô ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù. # ln -s /usr/local/openoffice/bin/openoffice_swrite /usr/bin/swrite/usr/bin Àº ȯ°æº¯¼ö PATH¿¡ µî·ÏÀÌ µÇ¾îÀÖÀ» °ÍÀ̱⠶§¹®¿¡, °£´ÜÇÏ°Ô swrite¸¸ ÀÔ·ÂÇÏ´Â Á¤µµ·Î /usr/local/openoffice/bin/openoffice_swrite ¸¦ ½ÇÇàÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ÀÌÁ¦ ls¸¦ ÀÌ¿ëÇØ¼ /usr/bin/swrite ÀÇ Á¤º¸¸¦ È®ÀÎÇØ º¸µµ·Ï ÇÏÀÚ. $ ls -al swrite lrwxrwxrwx 1 root root 43 2007-11-26 23:44 swrite -> /usr/local/openoffice/bin/openoffice_swriteswrite°¡ ¿øº» openoffice_swrite ¸¦ ¸µÅ©Çϰí ÀÖ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
Á÷°üÀûÀ¸·Î ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª link ´Â µÎ°¡Áö Á¾·ù°¡ ÀÖ´Ù. ½Éº¼¸¯ ¸µÅ©¿Í Çϵ帵ũ°¡ ±×°ÍÀÌ´Ù. À̵ÑÀÇ Â÷ÀÌÁ¡¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. 10.2 hard link
¾Õ¼ ÆÄÀÏÀº ÀåÄ¡³»¿¡¼ ½Äº°µÇ±â À§Çؼ inode ¸¦ °¡Áø´Ù´Â °ÍÀ» ¾ð±ÞÇß¾ú´Ù. ¿©±â¿¡ inode °¡ 1234 ÀÎ ÆÄÀÏ myfileÀÌ ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ. À̰ÍÀ» ´Ù¸¥ Directory¿¡ º¹»çÇϱâ À§ÇÑ °¡Àå ÀϹÝÀûÀÎ ¹æ¹ýÀº ÆÄÀÏÀ» copy ÇÏ´Â °ÍÀ¸·Î À̰æ¿ì »õ·Î¿î inode ¸¦ °¡Áö´Â ÆÄÀÏÀÌ »ý±æ °ÍÀÌ´Ù. ±×·³ cp(1)¸¦ ÀÌ¿ëÇØ¼ ÆÄÀÏÀ» º¹»çÇØº¸µµ·Ï ÇÏÀÚ. # mkdir testdir # cp myfile testdir/myfile2ÀÌÁ¦ µÎ°³ ÆÄÀÏÀÇ inode¸¦ È®ÀÎÇØ º¸µµ·ÏÇÏÀÚ. statÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÇÁ·Î±×·¥À» ¸¸µé ÇÊ¿ä´Â ¾ø´Ù. ls ÀÇ -i¿É¼ÇÀ» »ç¿ëÇÏ¸é °£´ÜÇÏ°Ô ÆÄÀÏÀÇ inode °ªÀ» ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. # ls -i myfile 1131883 myfile # ls -i testdir/myfile2 1163816 testdir/myfile2³»¿ëÀº µ¿ÀÏÇÏÁö¸¸ ¿ÏÀüÈ÷ ´Ù¸¥ ÆÄÀÏÀÌ »ý¼ºµÇ¾úÀ½À» ¾Ë ¼ö ÀÖ´Ù.
ÀÌ ¹æ¹ýÀº ´ëºÎºÐÀÇ °æ¿ì À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ°ÚÁö¸¸ ÇϳªÀÇ ÆÄÀÏÀ» ¿©·¯°³ÀÇ µð·ºÅ丮¿¡ °øÀ¯ÇÒ ¸ñÀûÀ¸·Î »ç¿ëÇϰíÀÚ ÇÒ °æ¿ì ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ¿¹¸¦ µé¾î ÁÖ¼Ò·Ï ÆÄÀÏÀÎ /home/yundream/mydata.txt °¡ ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ. ÀÌ ÆÄÀÏÀ» /home/dragona ¿¡ °øÀ¯ÇÏ±æ ¿øÇÑ´Ù. ¸¸¾à mydata.txt¿¡ »õ·Î¿î ³»¿ëÀÌ Ãß°¡µÇ°Å³ª »èÁ¦µÇ¸é /home/dragona ¿¡µµ ±×´ë·Î Àû¿ëµÇ¾î¾ß ÇÑ´Ù. ´Ü¼øÈ÷ copy ÇÒ°æ¿ì¿¡´Â ÇÑÂÊ¿¡¼ º¯°æÇϸé, ´Ù¸¥ ÇÑÂÊ¿¡´Â ¹Ý¿µµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ¸µÅ©¸¦ »ç¿ëÇϸé ÀÌ ¹®Á¦¸¦ °£´ÜÇÏ°Ô ÇØ°áÇÒ ¼ö ÀÖ´Ù. # ln mydata.txt /home/dragonaÀÌÁ¦ ÇÑÂÊ¿¡¼ ÆÄÀÏÀ» ¼öÁ¤Çغ¸ÀÚ. ´Ù¸¥ Âʵµ ±×´ë·Î ¼öÁ¤µÈ ³»¿ëÀÌ ¹Ý¿µµÇ¾î ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ls -i ·Î È®ÀÎÇØº¸¸é µÎ°³ÀÇ ÆÄÀÏÀÌ µ¿ÀÏÇÑ inode¸¦ °¡Áö°í ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. À̰ÍÀ» ¸µÅ©¶ó°í Çϸç, À§¿¡¼¿Í °°ÀÌ inode¸¦ °øÀ¯Çؼ »ç¿ëÇÏ´Â °ÍÀ» ÇÏµå ¸µÅ© ¶ó°í ÇÑ´Ù. ÀÌÇØÇϱ⠽±°Ô ±×¸²À¸·Î ³ªÅ¸³»º¸ÀÚ¸é ´ÙÀ½°ú °°´Ù. ![]()
file_name 1°ú file_name2 °¡ ¼·Îµ¿ÀÏÇÑ inode¸¦ °¡¸®Å°°í ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ Çϵ帵ũ·Î ¾òÀ» ¼ö ÀÖ´Â ÀåÁ¡Àº µ¥ÀÌÅ͸¦ °øÀ¯ÇÒ ¼ö ÀÖ´Ù´Â °Í ¿Ü¿¡, µð½ºÅ©¸¦ ¾Æ³¥ ¼ö ÀÖ´Ù´Â ÀåÁ¡µµ °¡Áø´Ù. µ¥ÀÌÅ͸¦ Á÷Á¢º¹»çÇÏ´Â°Ô ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. ¿øº»Àº ÇϳªÀ̰í inode ¸¸ °øÀ¯ÇÒ »ÓÀÌ´Ù. Çϵ帵ũ¸¦ Çϳª »ý¼ºÇϸé inode °øÀ¯ Ä«¿îÅͰ¡ 1Áõ°¡ÇÒ »ÓÀÌ´Ù. ls -al ·Î mydata.txt ¿øº»ÆÄÀÏÀÇ Á¤º¸¸¦ È®ÀÎÇØ º¸ÀÚ # ls -al mydata.txt -rw-r----- 2 yundream yundream 192 2007-11-26 23:57 mydata.txtÇϵ帵ũ Ä«¿îÅͰ¡ Çϳª Áõ°¡Çؼ 2°¡ µÇ¾î ÀÖ´Â°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÆÄÀÏÀ» Çϳª Áö¿ì°í ³ª¼ ls °á°ú¸¦ º¸¸é Ä«¿îÅͰ¡ Çϳª ÁÙ¾î¼ 1ÀÌ µÇ´Â°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
Çϵ帵ũ¸¦ »ç¿ëÇÒ ¶§, ÁÖÀÇÇØ¾ßÇÒ Á¡ÀÌ ÀÖ´Ù. Çϵ帵ũ´Â inode ¸¦ °¡¸®Å²´Ù. ÀÌ ¶§, inode ´Â ÇϳªÀÇ ÀåÄ¡¿¡¼¸¸ À¯ÀÏÇϹǷΠ´Ù¸¥ ÀåÄ¡·ÎÀÇ Çϵ帵ũ´Â ºÒ°¡´É ÇÏ´Ù´Â Á¡ÀÌ´Ù. ¿Ö³ÄÇÏ¸é ´Ù¸¥ ÀåÄ¡¿¡¼ À¯ÀÏÇÏ´Ù´Â °ÍÀ» º¸ÀåÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ÀÌ·± °æ¿ì¿¡´Â ½Éº¼¸¯¸µÅ©¸¦ »ç¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù. 11 ½Éº¼¸¯ ¸µÅ©
ÀÌ¿Í ´Þ¸® ½Éº¼¸¯ ¸µÅ©´Â º°µµÀÇ inode¸¦ °¡Áö´Â ÆÄÀÏ·Î ¿øº»ÆÄÀÏ¿¡ ´ëÇÑ inode¿Í ÇÔ²² ÀåÄ¡ Á¤º¸±îÁö¸¦ °¡Áö°í ÀÖ´Ù. ¾î¶²ÆÄÀÏ¿¡ ´ëÇÑ inode¿Í ÀåÄ¡Á¤º¸¸¦ ¾Ë°í ÀÖ´Ù¸é, Àü ½Ã½ºÅÛ¿¡¼ À¯ÀÏÇÑ ÆÄÀÏÀ» °¡¸®Å³ ¼ö Àֱ⠶§¹®¿¡ ÀåÄ¡¿¡ °ü°è¾øÀÌ ¸µÅ©¸¦ °É ¼ö ÀÖ°Ô µÈ´Ù. ![]()
±×·³ mydata.txt ¸¦ ¿øº»ÆÄÀÏ·Î ÇÏ´Â ½Éº¼¸¯¸µÅ© mydata2.txt¸¦ ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ln ¸í·É¿¡ -s¿É¼ÇÀ» ÁÖ¸é ½Éº¼¸¯¸µÅ©¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. # ln -s mydata.txt mydataln.txtÀÌÁ¦ -i ¿É¼ÇÀ» ÀÌ¿ëÇØ¼ µÎ°³ ÆÄÀÏÀÇ inode¸¦ ºñ±³ÇØ º¸¸é ¼·Î ´Ù¸¥ º°°³ÀÇ inode¸¦ À¯ÁöÇϰí ÀÖÀ½À» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ls -l À» ÀÌ¿ëÇØ¼ ½Éº¼¸¯¸µÅ©°¡ °¡¸®Å°´Â ¿øº»ÆÄÀÏÀÇ À̸§À» ¾ò¾î¿Ã ¼ö ÀÖ´Ù. # ls -l mydataln.txt lrwxrwxrwx 1 yundream yundream 10 2007-11-28 01:49 mydataln.txt -> mydata.txt 12 Ç¥ÁØÀԷ ǥÁØÃâ·Â Ç¥ÁØ¿¡·¯
ÇÁ·Î±×·¥Àº ¾î¶² °ªÀ» ÀÔ·Â ¹Þ¾Æ¼ ó¸®ÇÏ°í ±× °á°ú¸¦ Ãâ·ÂÇÏ´Â ÀÏÀ» ÇÑ´Ù. ÀÔ·ÂÀº º¸Åë Űº¸µå¸¦ ÅëÇØ¼ ÀÌ·ç¾îÁö°í Ãâ·ÂÀº ¸ð´ÏÅ͸¦ ÅëÇØ¼ ÀÌ·ç¾îÁø´Ù. ´ëºÎºÐÀÇ ÇÁ·Î±×·¥ÀÌ ÀÌ·¯ÇÑ ÀÔ/Ãâ·Â ¹æ½ÄÀ» »ç¿ëÇÑ´Ù.
ÇØ¼ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ¶§¿¡´Â ±âº»ÀûÀ¸·Î Űº¸µåÀåÄ¡¿Í ¸ð´ÏÅÍÀåÄ¡¸¦ ¿¾î¼ ÀÔÃâ·ÂÀÌ °¡´ÉÇÏ°Ô ÇØ³õ¾Ò´Ù. ÀÌ·¸°Ô Űº¸µå ÀåÄ¡¸¦ ÅëÇÑ ÀÔ·ÂÀ» Ç¥ÁØÀÔ·ÂÀ̶óÇÏ°í ¸ð´ÏÅ͸¦ ÅëÇØ Ãâ·ÂÇÏ´Â °ÍÀ» Ç¥ÁØÃâ·ÂÀ̶ó°í ÇÑ´Ù.
Űº¸µå¸¦ ÅëÇÑ ÀÔ·ÂÀ» Ç¥ÁØÀÔ·ÂÀ̶ó°í Á¤ÀÇ ÇÏ´Â°Ç ¹®Á¦°¡ ¾ø´Ù. ±×·¯³ª ¸ð´ÏÅ͸¦ ÅëÇÑ Ç¥ÁØÃâ·Â¿¡´Â ¾à°£ÀÇ ¹®Á¦°¡ ÀÖ´Ù. ÇÁ·Î±×·¥ÀÌ ¸ð´ÏÅÍ¿¡ Ãâ·ÂÇÏ´Â Á¤º¸¿¡´Â ÀÔ·Â µ¥ÀÌÅ͸¦ Á¤»óÀûÀ¸·Î ó¸®Çؼ ³ª¿À´Â °á°ú°ª¿Ü¿¡ À߸ø ó¸®µÇ¾î¼ Ãâ·ÂµÇ´Â °á°ú°ªÀÌ Àֱ⠶§¹®ÀÌ´Ù. µ¡¼À ÇÁ·Î±×·¥À» ¸¸µé¾ú´Âµ¥, ÇÇ¿¬»êÀÚ¿¡ ¼ýÀÚ´ë½Å ¾ËÆÄºª ¹®ÀÚµîÀ» ³Ö¾ú´Ù¸é, ÇÁ·Î±×·¥Àº ¿¡·¯¸Þ½ÃÁö¸¦ Ãâ·ÂÇÒ °ÍÀÌ´Ù. ±×·±µ¥ ¶È°°ÀÌ ¸ð´ÏÅÍ¿¡ Ãâ·ÂÀÌ µÇ¾î¹ö¸®¸é, °á°ú°ªÀÌ ¿¡·¯ÀÎÁö ¾Æ´ÑÁö ±¸ºÐÇÒ ¼ö°¡ ¾øÀ» °ÍÀÌ´Ù.
ÀÌ·¸°Ô Ãâ·Â°ªÀÌ Á¤»óÀÎÁö ¿¡·¯ÀÎÁö¸¦ ±¸ºÐÇϱâ À§Çؼ Ç¥ÁØÃâ·Â¿Ü¿¡ Ç¥ÁØ¿¡·¯¸¦ Á¦°øÇÑ´Ù. °á°úÀûÀ¸·Î ÇÁ·Î±×·¥Àº ÃÖÃÊ ½ÇÇà½Ã ´ÙÀ½°ú °°Àº 3°³ÀÇ ÀÔÃâ·Â ÀåÄ¡¸¦ openÇÏ°Ô µÈ´Ù.
001 #include <unistd.h> 002 #include <sys/types.h> 003 #include <fcntl.h> 004 #include <stdio.h> 005 #include <string.h> 006 007 #define STDIN 0 008 #define STDOUT 1 009 #define STDERR 2 010 011 #define ERRMSG "Devide Not Zero\n" 012 int main() 013 { 014 int a; 015 int b; 016 char buf[80]; 017 018 read(STDIN, buf, 80); 019 a = atoi(buf); 020 021 read(STDIN, buf, 80); 022 b = atoi(buf); 023 if (b == 0) 024 { 025 write(STDERR, ERRMSG, strlen(ERRMSG)); 026 return 1; 027 } 028 029 sprintf(buf, "%d / %d = %d\n", a, b, (int)(a/b)); 030 031 write(STDOUT, buf, strlen(buf)); 032 return 0; 033 } 034
13 ÀÔÃâ·Â ÀçÁöÇâ
ÀÔÃâ·Â ÀçÁöÇâ ȤÀº I/O Redirection¿¡ ´ëÇØ¼ ¾Ë¾Æº¸ÀÚ. ÀÏ´Ü ÀçÁöÇâÀÇ Àǹ̿¡ ´ëÇØ¼ ¾Ë°í ³Ñ¾î°¥ Çʿ䰡 ÀÖÀ»°Í °°´Ù. ÀçÁöÇâÀÇ »çÀüÀû Àǹ̴ ´Ù¸¥ ¹æÇâÀ¸·Î º¸³½´Ù ÀÌ´Ù. ¿©±â¿¡ ¸¶Ãß¾î ÀÔÃâ·Â ÀçÁöÇâÀ» »çÀüÀûÀÇ¹Ì ±×´ë·Î ÇØ¼®À» ÇÏÀÚ¸é, ÀԷ°ú Ãâ·ÂÀ» ´Ù¸¥ ¹æÇâÀ¸·Î º¸³½´Ù°¡ µÉ °ÍÀÌ´Ù. ½ÇÁ¦ ÀÔÃâ·Â ÀçÁöÇâÀº »çÀüÀûÀÇ¹Ì ±×´ë·Î ÀÌÇØÇÏ¸é µÈ´Ù.
¸®´ª½º¿¡¼ ¸ðµç °ÍÀº ÆÄÀÏ·Î ´Ù·ç¾îÁø´Ù°í Çß´Ù. ÀÌ´Â ÀԷ°ú Ãâ·Â¿¡µµ ¿¹¿Ü¾øÀÌ Àû¿ëÀÌ µÇ¹Ç·Î, ÀԷ°ú Ãâ·ÂÀ» ´Ù¸¥ ¹æÇâÀ¸·Î º¸³½´Ù´Â ÀԷ°ú Ãâ·ÂÀ» ´Ù¸¥ ÆÄÀÏ·Î º¸³½´Ù¿Í µ¿ÀÏÇÔÀ» ÀǹÌÇÑ´Ù. ¿¹ÄÁµ¥, Űº¸µå·Î ºÎÅÍ ÀÔ·Â ¹ÞÀº µ¥ÀÌÅÍ - Áï Ç¥ÁØÀÔ·Â - ÀÏ¹Ý ÆÄÀÏ·Î º¸³»°Å³ª ÇÁ¸°ÅÍ - ÇÁ¸°Å͵µ ÆÄÀÏÀ̴ϱî·Î º¸³»´ÂµîÀÇ ÀÏÀÌ °¡´ÉÇÏ´Ù´Â ¾ê±â°¡ µÈ´Ù. ÀÏ¹Ý ÆÄÀÏÀ» ÇÁ¸°ÅÍ·Î º¸³»°Å³ª, Ç¥ÁØÃâ·ÂÀ» Ç¥ÁØ¿¡·¯·Î º¸³»´Â µîÀÇ ÀÏ¿ª½Ã °¡´ÉÇÏ´Ù. ¸ðµç °ÍÀÌ ÆÄÀÏÀ̱⠶§¹®¿¡ ¸ðµç ¹æÇâÀ¸·ÎÀÇ ÀçÁöÇâÀÌ °¡´ÉÇÏ´Ù.
stdio.c ÆÄÀÏÀ» ¿¹·Î µé¾î¼ ¼³¸íÇØº¸µµ·Ï ÇϰڴÙ.
stdio.c ÇÁ·Î±×·¥Àº ÀÔ·ÂÀ» °Ë»çÇØ¼ ºÐ¸ð°¡ 0ÀÌ µÇ¸é, ¿¡·¯¸Þ½ÃÁö¸¦ Ãâ·ÂÇϵµ·Ï Çß´Ù. ÀÌ ¿¡·¯¸Þ½ÃÁö´Â Ç¥ÁØ¿¡·¯ ÇüÅ·Π¸ð´ÏÅÍ¿¡ Ãâ·ÂµÈ´Ù. ÀÔ·ÂÀÌ Á¦´ë·Î ÀÌ·ç¾îÁ®¼ °á°ú°ªÀÌ ³ª¿Ã°æ¿ì¿¡´Â Ç¥ÁØÃâ·Â ÇüÅ·Π¸ð´ÏÅÍ¿¡ Ãâ·ÂÀÌ µÈ´Ù. ÀÌ°É ÆÄÀÏ·Î ÀçÁöÇâ ÇØº¸µµ·Ï ÇÏÀÚ.
½©¿¡¼´Â ²©¼è¸¦ ÀÌ¿ëÇØ¼ ÀçÁöÇâÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. Ç¥ÁØÃâ·ÂÀ» result.txt ÆÄÀÏ·Î ÀçÁöÇâÇÏ°í °á°ú¸¦ È®ÀÎÇØ º¸µµ·Ï ÇÏÀÚ. # ./stdio > result.txt 1234 2 # cat result.txt 1234 / 2 = 617
ÇÁ·Î±×·¥À» ¸¸µé¾î¼ Å×½ºÆ® ÇÒ°æ¿ì µð¹ö±ëµîÀÇ ¸ñÀûÀ¸·Î ¿¡·¯¸Þ½ÃÁö¸¦ ÆÄÀÏ·Î µû·Î ÀúÀåÇØµÖ¾ß ÇÒÇʿ䰡 »ý±ä´Ù. ±×·¸´Ù¸é stdioÀÇ Ç¥ÁØ¿¡·¯¸¦ ÆÄÀÏ·Î ÀçÁöÇâ ½ÃŰ¸é µÉ°ÍÀÌ´Ù. # ./stdio 2> err.txt 1000 0 # cat err.txt Devide Not ZeroÇ¥ÁØ¿¡·¯¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î ÀçÁöÇâ ½Ãų ¼öµµ ÀÖ´Ù. # ./stdio 2>1&ÀÌÁ¦ Ç¥ÁØ¿¡·¯µµ Ç¥ÁØÃâ·Â ÇüÅ·Π¸ð´ÏÅÍ¿¡ »Ñ·ÁÁö°Ô µÈ´Ù. Ç¥ÁØ¿¡·¯¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î ÀçÁöÇâ ½ÃŰ´Â ¿¹´Â grep µîÀ» ÀÌ¿ëÇØ¼ °á°ú¸¦ ¸ð´ÏÅ͸µ ÇÏ´Â ½ºÅ©¸³Æ®¸¦ ¸¸µé±â À§Çؼ ÀÚÁÖ ÀÌ¿ëµÈ´Ù. ¾Æ·¡ÀÇ °æ¿ì¸¦ º¸µµ·Ï ÇÏÀÚ. # ./stdio | grep Not > err.logÀ§ÀÇ ½ºÅ©¸³Æ®´Â stdioÀÇ ½ÇÇà°á°úÁß ºÐ¸ð°¡ 0ÀÎ °æ¿ì¸¦ err.log·Î ³²±â±â À§ÇÑ ¸ñÀûÀ¸·Î ÀÛ¼ºµÇ¾ú´Ù. ±×·¸Áö¸¸ ¿¹»ó°ú´Â ´Ù¸£°Ô ºÐ¸ð°¡ 0ÀÎ °æ¿ìµµ err.log·Î ³²°ÜÁöÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿Ö³ÄÇÏ¸é ÆÄÀÌÇÁ |´Â Ç¥ÁØÃâ·Â °á°ú¸¸À» grep·Î ³Ñ±â´Âµ¥ Device Not Zero´Â Ç¥ÁØ¿¡·¯À̹ǷΠÆÄÀÌÇÁ¸¦ ÅëÇØ¼ grep·Î ³Ñ¾î°¡Áö ¾Ê±â ¶§¹®ÀÌ´Ù.
À̶§ Ç¥ÁØ¿¡·¯¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î ÀçÁöÇâ ½ÃŰ´Â ¹æ¹ýÀ¸·Î ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù. À§ÀÇ ½ºÅ©¸³Æ®¸¦ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÑ´ÙÀ½¿¡ Å×½ºÆ®Çغ¸µµ·Ï ÇÏÀÚ. # ./stdio 2>&1 | grep Not > err.log 1000 0 # cat err.log Devide Not ZeroÇ¥ÁØÃâ·Â°á°ú°¡ ÆÄÀÏ·Î ÀúÀåµÈ°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ·ÐÀûÀ¸·Î´Â ÆÄÀÏ¿¡ ÀúÀåµÈ ³»¿ëÀ» °¢ ÀåÄ¡¿¡ ÀçÁöÇâ ½ÃŰ´Â °Í¸¸À¸·Îµµ ÇØ´ç ÀåÄ¡¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µéÀÚ¸é wav ÆÄÀÏÀ» ÀÐ¾î¼ »ç¿îµåÄ«µå¸¦ °¡¸®Å°´Â ÀåÄ¡ÆÄÀÏ¿¡ ÀçÁöÇâ ½ÃÄѼ wav ÆÄÀÏÀ» Ç÷¹ÀÌ ÇÏ´Â °ÍÀÌ´Ù. # cat sound.wav > /dev/audio
ÀçÁöÇâÀÇ °³³ä¿¡ ´ëÇØ¼ ¾Ë¾Æº¸¾Ò´Âµ¥, Á¤ÀÛ Áß¿äÇÑ°Ç ÀçÁöÇâÀÌ ½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀÇ °üÁ¡¿¡¼ ¾î¶»°Ô ±¸ÇöÀÌ µÇ´Â°¡ ÇÏ´Â °ÍÀÌ´Ù. °£´ÜÈ÷ »ý°¢ÇØ º¸ÀÚ¸é, µÎ°³ÀÇ ÆÄÀÏÀ» ¿¬´ÙÀ½¿¡ ÇϳªÀÇ ÆÄÀÏÀÇ ³»¿ëÀ» ÀÐ¾î¼ ´Ù¸¥ ÆÄÀÏ·Î º¹»çÇÏ¸é µÈ´Ù. Ç¥ÁØÃâ·ÂÀ» ÆÄÀÏ·Î ÀçÁöÇâÇÑ´Ù¸é, Ç¥ÁØÃâ·Â°ú ÆÄÀÏÀ» ¿¬´ÙÀ½¿¡ Ç¥ÁØÃâ·ÂÀÇ ³»¿ëÀ» ÀÐ¾î¼ ÆÄÀÏ¿¡ ±×´ë·Î ¾²´Â Çü½ÄÀÌ´Ù.
±×·¯³ª ÀÌ ¹æ½ÄÀº ¸Å¿ì º¹ÀâÇÏ´Ù. À̺¸´Ù´Â dup2()ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ Á»´õ °£´ÜÇÏ°Ô ÀçÁöÇâÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ¾Æ·¡ÀÇ Äڵ带 ÄÄÆÄÀÏ ÇÑ´ÙÀ½ ½ÇÇà½ÃÄÑ º¸µµ·Ï ÇÏÀÚ. 001 #include <unistd.h> 002 #include <sys/types.h> 003 #include <sys/stat.h> 004 #include <fcntl.h> 005 #include <stdio.h> 006 #include <string.h> 007 008 #define STDIN 0 009 #define STDOUT 1 010 #define STDERR 2 011 012 int main(int argc, char **argv) 013 { 014 int fd; 015 fd = open("test.log", O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP); 016 fd = dup2(fd, STDOUT); 017 printf("Hello World %d\n", fd); 018 } 019
14 ÀÔÃâ·Â ¹öÆÛ ºñ¿ì±â
ÀϹÝÀûÀ¸·Î ¹öÆÛ´Â ¼º´ÉÀ» ³ôÀ̱â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù. ¿¹ÄÁµ¥, 1byte¾¿ 2048¹ø ¾²´Â °Í º¸´Ù´Â , 1024byte¾¿ 2¹ø ¾²´Â°Ô ÈξÀ È¿À²ÀûÀÏ °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ¹®¼´Â ¹öÆÛÅ©±â°¡ Àбâ/¾²±â ¼º´É¿¡ ¹ÌÄ¡´Â ¿µÇâ¹®¼¸¦ Àо±â ¹Ù¶õ´Ù.
ÀϹÝÀÀ¿ë Â÷¿ø¿¡¼ »Ó¸¸ ¾Æ´Ï¶ó, ¿î¿µÃ¼Á¦Â÷¿ø¿¡¼µµ ÀÌ·¯ÇÑ ±ÔÄ¢Àº µ¿ÀÏÇÏ°Ô Àû¿ëµÈ´Ù. ÀÌ¿¡ µû¶ó ÀԷ°ú Ãâ·Â¿¡ ´ëÇØ¼µµ º°µµÀÇ ¹öÆÛ¸¦ À¯ÁöÇÏ°Ô µÈ´Ù. ¿¹¸¦µé¾î write(2)¸¦ ÀÌ¿ëÇØ¼ È¸é¼ µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù°í Çϸé, 1byte¾¿ ¾µ¶§¸¶´Ù Ãâ·ÂµÇ´Â°Ô ¾Æ´Ï°í, ¹öÆÛ¿¡ ½×¾ÆµÎ°í ÀÖ´Ù°¡ ¹öÆÛ°¡ °¡µæ áÀ» ¶§ Ãâ·ÂÀ» ÇÏ°Ô µÈ´Ù. #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char **argv) { int i = 1; while(1) { printf("%d",i); usleep(100); } }À§ Äڵ带 ½ÇÇà½ÃÄÑ º¸±â ¹Ù¶õ´Ù. ¹öÆÛ°¡ °¡µæÂ÷±â Àü±îÁö´Â ȸ鿡 Ãâ·Â½ÃŰÁö ¾Ê´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´ë°³ÀÇ °æ¿ì ¹öÆÛÀÇ Å©±â´Â 1024À̹ǷÎ, 1024°³ÀÇ ¹®ÀÚ°¡ ±â·ÏµÇ¾úÀ» ¶§, Çѹø¿¡ ȸ鿡 Ãâ·ÂµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
±×·¯³ª ¶§¶§·Î, °ð¹Ù·Î ¹öÆÛ°¡ ä¿öÁö±â Àü¿¡ ¹öÆÛÀÇ ³»¿ëÀ» ÆÄÀÏ¿¡ ¾²°í, ¹öÆÛ¸¦ ºñ¿ï Çʿ䰡 ÀÖÀ» °ÍÀÌ´Ù. ¸¸¾à ¹öÆÛ°¡ ´Ù ä¿öÁöÁö ¾Ê¾Æ¼ ÆÄÀÏ¿¡ ¾²Áö ¾ÊÀº »óÅ¿¡¼ ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ¾î ¹ö¸°´Ù¸é, ¹öÆÛ¿¡ ÀÖ´Â ³»¿ëÀº ³¯¾Æ°¡ ¹ö¸± °ÍÀÌ´Ù. À§ÀÇ ÇÁ·Î±×·¥À» Áß°£¿¡ Ctrl+C¸¦ ´·¯¼ Á¾·á½ÃÄÑ º¸±â ¹Ù¶õ´Ù. ¹öÆÛÀÇ ³»¿ëÀÌ ¹ö·ÁÁüÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. À̶§ ¾²´Â ÇÔ¼ö°¡ fflush()·Î, ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ¸é, ¹öÆÛÀÇ ³»¿ëÀ» Áï½Ã ÆÄÀÏ¿¡ ¾²°Ô µÈ´Ù. |
|
|||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|