ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. ¾î´Àµ¡ 13Àå°·Î ¸®´ª½º ȯ°æ¿¡¼ÀÇ C ÇÁ·Î±×·¡¹Ö ¹®¼ ÇÁ·ÎÁ§Æ®µµ Á¾¹Ý¿¡ Á¢¾îµé¾ú´Ù. ÀÌ ÀåÀ» Æ÷ÇÔÇØ¼ 2Àå Á¤µµ¸é ¸¶¹«¸®°¡ µÉ°Å °°´Ù. ½¬¾ö½¬¾ö ÇÑ 7°³¿ù Á¤µµ¸¦ ²ø¾î¿Â°Å °°´Ù. Áö±Ý±îÁöÀÇ ³»¿ëÀ¸·Î C ¾ð¾îÀÇ ¹®¹ýÀûÀÎ ³»¿ëÀº °ÅÀÇ ´Ù ´Ù·ç¾ú´Ù°í º¸¸é µÈ´Ù. ÀÌÁ¦ ºÎÅÍ´Â C ¾ð¾îÀÇ ÀÀ¿ë°ú °ü·ÃµÈ ºÎºÐÀ» °øºÎÇØ¾ß ÇÑ´Ù. ÀÌ ÀÀ¿ëÀ̶õ ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö, ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö, DB ÇÁ·Î±×·¡¹Ö, °ÔÀÓ ÇÁ·Î±×·¡¹Ö°ú °°Àº ´Ù¾çÇÑ ¿µ¿ªÀÌ µÈ´Ù.
ÀÌ ¹®¼¿¡¼´Â À§ÀÇ ³»¿ëµéÀ» ´Ù·çÁø ¾ÊÀ» °ÍÀÌ´Ù. ÇϳªÇϳª°¡ Ã¥ÇѱÇÀÇ ºÐ·®À¸·Î, ÀÔ¹®¼¿¡ ÇØ´çÇÏ´Â À̹®¼ÀÇ ¼öÁØÀ» ¶Ù¾î³Ñ±â ¶§¹®ÀÌ´Ù. ´ë½Å ¸ðµç ÀÀ¿ëºÐ¾ß¸¦ ÅëÆ²¾î¼, °øÅëÀûÀ¸·Î ´Ù·ç¾îÁö´Â ºÐ¾ßÀÎ ÀԷ°ú Ãâ·Â¿¡ ´ëÇØ¼ °£´ÜÈ÷ ¾Ë¾Æº¸µµ·Ï ÇÒ °ÍÀÌ´Ù.
ÀÌ ¹®¼¿¡¼ ´Ù·ç´Â ³»¿ëÀº ´ÙÀ½°ú °°´Ù.
±×·¯¹Ç·Î ÀÔ/Ãâ·Â¿¡ ´ëÇØ¼ ¹Ýµå½Ã ¾Ë°í ³Ñ¾î°¥ Çʿ䰡 ÀÖ´Ù. 1 ÀÔÃâ·Â ÀåÄ¡
¾Æ¸¶µµ ÄÄÇ»ÅÍÀÇ 3°¡Áö ±¸¼ºÀåÄ¡¿¡ ´ëÇØ¼ ¹è¿î±â¾ïÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÀÌµé ±¸¼º¿ä¼Ò´Â ´ÙÀ½°ú °°´Ù.
¾î¶² Çü½ÄÀ¸·ÎµçÁö °£¿¡ µ¥ÀÌÅ͸¦ ¹Þ¾ÆµéÀÌ´Â ÀåÄ¡´Â ÀÔ·ÂÀåÄ¡°¡ µÇ°í, ¹Þ¾ÆµéÀÎ µ¥ÀÌÅ͸¦ ¼Ò¸®,¹®ÀÚ,À̹ÌÁöÀÇ ÇüÅ·Π´Ù½ÃÇ¥ÇöÇØÁÖ´Â ÀåÄ¡¸¦ Ãâ·ÂÀåÄ¡¶ó°í Á¤ÀÇ ÇÒ ¼ö ÀÖ´Ù.
Űº¸µå·Î ÀÔ·ÂµÈ Á¤º¸´Â Áß¾Ó¿¬»êÀåÄ¡¿¡¼ 󸮵ȴÙÀ½¿¡ Àû´çÇÑ °úÁ¤À» °ÅÃļ ¸ð´ÏÅÍ·Î Ãâ·ÂÀ̵ǰí, ÇÊ¿äÇÑ °æ¿ì ÇÁ¸°Æ®¸¦ ÀÌ¿ëÇØ¼ Á¾ÀÌ·Î Ãâ·ÂµÇ°Å³ª ÇÒ °ÍÀÌ´Ù. 2 ¸ðµç ÀÔÃâ·ÂÀº ÆÄÀϷΠó¸®ÇÑ´Ù
À¯´Ð½º ¿î¿µÃ¼Á¦´Â ¸ðµç ÀÔÃâ·Â°ú °ü·ÃµÈ ÀåÄ¡´Â ÆÄÀϰú µ¿ÀÏÇÏ°Ô º¸°í 󸮸¦ ÇÑ´Ù. Çϵåµð½ºÅ©ÀÇ °æ¿ì C:, D:¿Í °°ÀÌ ´Ù·ç¾îÁö´Â °Í°ú´Â ´Þ¸®, À¯´Ð½º´Â ÀåÄ¡ÆÄÀÏÀ̶ó´Â Ư¼öÇÑ ÆÄÀÏ ÇüÅ·Π´Ù¸¥´Ù. »Ó¸¸ ¾Æ´Ï¶ó ÇÁ¸°Æ®, »ç¿îµåÄ«µå ±îÁöµµ ÆÄÀÏÀÇ ÇüÅ·Π´Ù·é´Ù. ÀÌ·¯ÇÑ ÀåÄ¡ÆÄÀϵéÀº /dev µð·ºÅ丮 ¹Ø¿¡ Á¸ÀçÇÑ´Ù. ¿¹¸¦µé¾î À©µµ¿ìÁî¿¡¼ ¸»ÇÏ´Â C: µå¶óÀ̺ê´Â /dev/hda1 °ú °°Àº ÆÄÀÏÀ̸§À¸·Î, ÇÁ¸°Åͱâ´Â /dev/lp0 À̶ó´Â ÆÄÀÏÀ̸§À¸·Î Á¸ÀçÇÑ´Ù.
ÄÄÇ»ÅÍ¿¡ »ç¿ëµÇ´Â ÀåÄ¡¸¦ ÆÄÀÏÀÇ °³³äÀ¸·Î ³õ°í º»´Ù´Â °ÍÀº À©µµ¿ìÁîȯ°æÀ» ÁÖ·Î »ç¿ëÇß´ø À¯Àú¿¡°Ô´Â ±×¸® Àͼ÷ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¯³ª Á¶±Ý¸¸ »ý°¢ÇØ º¸¸é Àû¾îµµ °³¹ßÀÚÀÔÀå¿¡¼´Â ¸Å¿ì ÇÕ¸®ÀûÀÎ °³³äÀÓÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÆÄÀϰú ¸¶Âù°¡Áö·Î Àаí, ¾´´Ù¶ó´Â °³³äÀÌ ±×´ë·Î Àû¿ëµÇ¸ç, ÀÏ¹Ý ÆÄÀÏ¿¡ »ç¿ëµÇ´Â ¹æ¹ý°ú µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î ´Ù¾çÇÑ Á¾·ùÀÇ ÀåÄ¡¸¦ ´Ù·ê ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¹°·Ð °¢ ÀåÄ¡µéÀº ÀÐ°í ¾²±â À§ÇÑ Àü¿ëÀÇ ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇϱ⠶§¹®¿¡ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ÇнÀÀÌ ÇÊ¿äÇϱä ÇÏÁö¸¸ »ç¿ëµÇ´Â ÇÔ¼öµîÀº ÀÏ¹Ý ÆÄÀÏÀ» ´Ù·ê¶§¿Í µ¿ÀÏÇÏ´Ù°í º¸¸é µÈ´Ù.
ÀÌ·¸°Ô ¸ðµç°É ÆÄÀÏ·Î ´Ù·ç°Ô µÊÀ¸·Î½á, ÀåÄ¡¿¡ ´ëÇÑ º°µµÀÇ ÇнÀ¾øÀ̵µ Àϰü¼ºÀÖ°Ô ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
ÇÏÁö¸¸ ¿©±â¿¡¼´Â ´Ù¸¥ ÀåÄ¡µé¿¡ ´ëÇÑ ÀÔÃâ·ÂÀ» ´Ù·çÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. °¡Àå ±âº»ÀÌ µÇ´Â ÆÄÀÏ¿¡ ´ëÇÑ ÀÔÃâ·Â ¸¸À» ´Ù·ê °ÍÀÌ´Ù. 3 file description
"abc.txt" ¶ó´Â ÆÄÀÏÀ» Àаųª ¾²±â À§Çؼ´Â ÆÄÀÏÀ» openÇÏ´Â °úÁ¤À» °ÅÄ£´Ù. ±×·¯¸é, ¿î¿µÃ¼Á¦´Â ÆÄÀÏÀ» ½±°Ô ´Ù·ê ¼ö ÀÖµµ·Ï int ÇüÀÇ ¼ýÀÚ¸¦ ³Ñ°ÜÁØ´Ù. ÀÌÈÄ¿¡ ÆÄÀÏ¿¡ ¾²°Å³ª Àд ÀÛ¾÷Àº ÆÄÀÏÀ̸§ÀÌ ¾Æ´Ñ ÀÌ ¼ýÀÚ¸¦ ÅëÇØ¼ ÀÌ·ç¾îÁö°Ô µÈ´Ù. ÀÌ ¼ýÀÚ¸¦ file descriptionÀ̶ó°í ÇÑ´Ù. ȤÀº ÆÄÀÏÁö½ÃÀÚ¶ó°í ºÎ¸£±âµµÇÑ´Ù.
½ÇÁ¦ ÇÁ·Î±×·¡¹Ö °úÁ¤¿¡¼ ÆÄÀÏÁö½ÃÀÚ¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö´Â ³ªÁß¿¡ ¿¹Á¦¸¦ ÅëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. 4 Ç¥ÁØÀÔ·Â, Ç¥ÁØÃâ·Â, Ç¥ÁØ¿¡·¯
¿î¿µÃ¼Á¦¿¡¼ ÁÖ¾îÁø ÀÏÀ» ÇÏ´Â ÃÖ¼Ò´ÜÀ§´Â ÇÁ·Î¼¼½º¶ó´Â °ÍÀ» ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ÇÁ·Î¼¼½º´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇàµÈ À̹ÌÁö·Î ¿î¿µÃ¼Á¦ÀÇ ¸ÞÀθ޸𸮿¡ À§Ä¡ÇÑ´Ù.
ÀÌ·¸°Ô ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¾î¼, ÇÁ·Î¼¼½º°¡ »ý¼ºµÇ¸é ÇÁ·Î¼¼½º´Â ÄÄÇ»ÅÍÀÇ ¿©·¯°¡Áö ±âº»ÀÚ¿øÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ÀÌ ±âº»ÀÚ¿ø¿¡ 3°³ÀÇ ÆÄÀÏÀÌ Æ÷ÇԵǾî ÀÖ´Ù. ¹Ù·Î ÀԷ°ú Ãâ·Â, ¿¡·¯¸¦ ´ã´çÇÏ´Â 3°³ÀÇ ÆÄÀϵéÀÌ´Ù. À̰͵éÀ» Ç¥ÁØÀÔ·Â, Ç¥ÁØÃâ·Â, Ç¥ÁØ¿¡·¯¶ó°í ÇÑ´Ù.
°£´ÜÇÑ ¿¹¸¦ µé¾î¼ ¼³¸íÇØº¸µµ·Ï ÇϰڴÙ. #include <unistd.h> #include <string.h> int main(int argc, char **argv) { char data[80]; char *msg = "Input Msg : "; memset(data, 0x00, 80); write(1, msg, strlen(msg)); // 1 read(0, data, 80); // 2 write(1, data, strlen(data)); // 3 write(2, "Error\n", 6); // 4 }
# ./write Input Msg : hello world hello world Error
Ç¥ÁØ¿¡·¯´Â ½©ÀÇ ÀçÁöÇâÀ» ÀÌ¿ëÇØ¼ µû·Î ºÐ¸®Çؼ ÀÐÀ» ¼ö ÀÖ´Ù. ÀçÁöÇâÀº >À» ¾²¸é µÈ´Ù. - 2Àå ¸®´ª½º¿Í C¾ð¾îÂü°í - ¶ÇÇÑ 2>¿Í °°ÀÌ Ç¥ÁØ¿¡·¯¸¸À» ºÐ¸®Çؼ ÀçÁöÇâ ½Ãų ¼ö°¡ ÀÖ´Ù. ¿©±â¿¡¼ 2°¡ ¹Ù·Î Ç¥ÁØÃâ·ÂÀ» °¡¸®Å°´Â ÆÄÀÏÁö½ÃÀÚ ¹øÈ£´Ù. ÀÌÁ¦ ´ÙÀ½°ú °°ÀÌ Ç¥ÁØ¿¡·¯¸¸ º°µµÀÇ ÆÄÀÏ¿¡ ÀçÁöÇâ ½ÃÄѺ¸µµ·Ï ÇÏÀÚ. # ./write 2> dump.log Input Msg : hello world hello world # cat dump.log ErrorÇ¥ÁØ¿¡·¯°¡ ¸ð´ÏÅÍ È¸éÀÌ ¾Æ´Ñ, dump.log ÆÄÀÏ¿¡ ÀúÀåµÈ°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. À̷νá, Ç¥ÁØ¿¡·¯¿Í Ç¥ÁØÃâ·ÂÀÌ ¸ð´ÏÅ͸¦ Ãâ·Â¹æÇâÀ¸·Î Çϰí ÀÖÁö¸¸, ¸í¹éÈ÷ ±¸ºÐµÇ´Â °ÍÀÓÀ» ÀÌÇØÇßÀ» °ÍÀÌ´Ù. 5 ÆÄÀÏ ÀÔÃâ·Â
±×·¯¸é À¯´Ð½º ÇÁ·Î±×·¡¹Ö¿¡ ÀÖ¾î¼ °¡Àå Áß¿äÇÑ ÆÄÀÏ ÀÔÃâ·Â¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ±âº»ÀûÀ¸·Î´Â Ç¥ÁØÀÔ·Â/Ãâ·Â/¿¡·¯¸¦ ´Ù·ç´Â ¹æ½Ä°ú µ¿ÀÏ ÇÏ´Ù.
´Ù¸¥Á¡ÀÌ ÀÖ´Ù¸é, Ç¥ÁØÀÔ·Â µîÀº ¿î¿µÃ¼Á¦°¡ ¾Ë¾Æ¼ ¿¾îÁÖÁö¸¸, ´Ù¸¥ ÆÄÀϵéÀº ÇÁ·Î±×·¡¸Ó°¡ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÆÄÀÏÀ» Á÷Á¢ ¿¾îÁÖ¾î¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù.
ÇØ¼ ÆÄÀÏ ÀÔÃâ·Â¿¡´Â read(2)¿Í write(2)¿Ü¿¡ ÆÄÀÏÀ» ¿±â À§ÇÑ open(2)°ú ´Ý±â À§ÇÑ close(2)°¡ »ç¿ëµÈ´Ù. ¿øÄ¢ÀûÀ¸·Î´Â ÀÌ ³×°¡ÁöÀÇ ÇÔ¼ö¸¸ ÀÖÀ¸¸é °ÅÀÇ ´ëºÎºÐÀÇ ÆÄÀϰú °ü·ÃµÈ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù.
À̵é ÇÔ¼ö¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ¸µÅ©·Î ¿¬°áµÇ´Â man page¸¦ Âü°íÇϱ⠹ٶõ´Ù. man page¿¡ °¢°¢ÀÇ ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸íÀÌ ÀÚ¼¼È÷ ³ª¿ÍÀÖÀ¸´Ï, ¿¹Á¦¸¦ ¼³¸íÇÏ´Â Á¤µµ·Î ³Ñ¾î°¡µµ·Ï ÇÒ °ÍÀÌ´Ù. 6 ¿¹Á¦ 1 - ÀüÇüÀûÀÎ ÆÄÀÏ Àбâ ÇÁ·Î±×·¥
cat À̶ó´Â ÇÁ·Î±×·¥À» ¾Ë °ÍÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ÀÎÀÚ·Î ÁÖ¾îÁø ÆÄÀÏÀ» ȸ鿡 Ãâ·ÂÇϴµ¥, cat°ú ºñ½ÁÇÑ ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ÀÌ ÇÁ·Î±×·¥ÀÇ À̸§Àº mycatÀ¸·Î ÇϰڴÙ. #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> // »ç¿ëÇϱ⠽±µµ·Ï Ç¥ÁØÀÔ·Â,Ãâ·Â,¿¡·¯¸¦ ´Ù¸¥ À̸§À¸·Î Á¤ÀÇ ÇÑ´Ù. #define STDIN 0 #define STDOUT 1 #define STDERR 2 int main(int argc, char **argv) { char *filename; int fd; int readn; char buf[80]; // ÀÌ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ±â À§Çؼ´Â ÆÄÀÏÀ̸§À» ÀÎÀÚ·Î ¹Þ´Â´Ù. // ±×·¯¹Ç·Î ÀÎÀÚ¸¦ Ã¼Å©ÇØÁÖ¾î¾ß ÇÑ´Ù. // ¸¸¾à ÀÎÀÚ°¡ ºÎÁ·ÇÏ´Ù¸é, ÇÁ·Î±×·¥ÀÇ »ç¿ë¹æ¹ýÀ» Ãâ·ÂÇϰí Á¾·áÇÑ´Ù. if (argc != 2) { printf("Usage : %s [file]\n", argv[0]); return 1; } // filename ÀÌ argv[1] À» °¡¸®Å²´Ù. // argv[1] À» ±×´ë·Î »ç¿ëÇØµµ µÇ°ÚÁö¸¸, ÄÚµåÀÇ °¡µ¶¼ºÀ» À§Çؼ // ´Ù¸¥ º¯¼öÀ̸§À» »ç¿ëÇϵµ·Ï Çß´Ù. filename = argv[1]; // ÆÄÀÏÀ» ÀбâÀü¿ë ¸ðµå·Î ¿¬´Ù. fd = open(filename, O_RDONLY); // ¿¡·¯ üũ¸¦ ÇÑ´Ù. if (fd < 0) { perror("file open err :"); return 0; } // read ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼, ÆÄÀÏÁö½ÃÀÚ·Î ºÎÅÍ µ¥ÀÌÅ͸¦ ÀоîµéÀδÙ. // read ÇÔ¼ö´Â ÀоîµéÀÎ µ¥ÀÌÅÍÀÇ Å©±â¸¦ ¸®ÅÏÇÑ´Ù. // ´õÀÌ»ó ÀÐÀ» µ¥ÀÌÅͰ¡ ¾ø´Ù¸é 0À» ¸®ÅÏÇÏ´Ï, ±×¶§ while ·çÇÁ¸¦ ºüÁ®³ª¿À¸é µÈ´Ù. while((readn = read(fd, buf, 80)) > 0) { // ÀоîµéÀÎ µ¥ÀÌÅÍÀÇ Å©±â ¸¸ÅÀ» ȸ鿡 Ãâ·ÂÇÑ´Ù. write(STDOUT, buf, readn); } close(fd); return 1; }ÀÌ ÇÁ·Î±×·¥Àº ±âÁ¸ÀÇ ÇÁ·Î±×·¥µé°ú´Â ´Þ¸® ²Ï ¿Ï¼ºµÈ ¸ð½ÀÀ» º¸¿©ÁÖ°í ÀÖ´Ù. ¾î¶² Á¡¿¡¼ ±×·±Áö »ìÆìº¸µµ·Ï ÇÏÀÚ.
# ./mycat mycat.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #define STDIN 0 #define STDOUT 1 #define STDERR 2 .... ....
ÀçÁöÇâÀ» ÀÌ¿ëÇÏ¸é ´ÙÀ½°ú °°Àº ÀÀ¿ëµµ °¡´É ÇÒ °ÍÀÌ´Ù. # ./mycat mycat.c > mycat.bak°á°úÀûÀ¸·Î mycat.c ¸¦ mycat.bak ¶ó´Â ÆÄÀÏ·Î º¹»ç¸¦ ÇѰͰú °°´Ù. 7 ¿¹Á¦ 2 - Ç¥ÁØÀÔ·ÂÀ¸·Î ºÎÅÍ ÀоîµéÀ̵µ·Ï ÇØº¸ÀÚ
À§¿¡¼ ´Ù·ç¾ú´ø ¿¹Á¦ ÇÁ·Î±×·¥À» ¾à°£ ¼öÁ¤Çؼ, Ç¥ÁØÀÔ·ÂÀ¸·Î ºÎÅÍ ÀÔ·ÂµÈ µ¥ÀÌÅ͸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #define STDIN 0 #define STDOUT 1 #define STDERR 2 int main(int argc, char **argv) { char *filename; int readn; char buf[80]; while((readn = read(STDIN, buf, 80)) > 0) { // ÀоîµéÀÎ µ¥ÀÌÅÍÀÇ Å©±â ¸¸ÅÀ» ȸ鿡 Ãâ·ÂÇÑ´Ù. write(STDOUT, buf, readn); } return 1; }ÇÁ·Î±×·¥ÀÌ ÈξÀ °£´ÜÇØÁ³´Ù. Ç¥ÁØÀÔ·ÂÀº ÇÁ·Î¼¼½º°¡ »ý¼ºµÉ ¶§ ÀÚµ¿À¸·Î ¿¸°´Ù. ´öºÐ¿¡ ÆÄÀÏÀ» ¿©´Â µîÀÇ Äڵ尡 ÇÊ¿ä ¾ø±â ¶§¹®ÀÌ´Ù. À§ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇÑ´ÙÀ½¿¡ ½ÇÇà½ÃÄѺ¸µµ·Ï ÇÏÀÚ. # ./mycat2 hello world hello world ok okŰº¸µå ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÌ°í ¿£ÅÍ۸¦ ´©¸£¸é, ÀÔ·ÂµÈ ³»¿ëÀÌ Ãâ·ÂµÇ´Â°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Ctrl+D¸¦ ´©¸£¸é ÇÁ·Î±×·¥À» ºüÁ®³ª¿Ã ¼ö ÀÖ´Ù.
ȤÀº ÆÄÀÌÇÁ¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù. ÆÄÀÌÇÁ¸¦ ÅëÇØ¼ ³Ñ¾î¿À´Â Á¤º¸´Â Ç¥ÁØÀÔ·ÂÀ¸·Î ÀÐÀ» ¼ö Àֱ⠶§¹®ÀÌ´Ù. # cat mycat.2 | ./mycat2 #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> ... ...ÀÌ·¸°Ô ÆÄÀÌÇÁ¿Í Ç¥ÁØÀÔ·ÂÀ» Àß »ç¿ëÇϸé, º¹ÀâÇÏ°Ô ÆÄÀÏÀ» ¿°Å³ª ÇÏ´Â ÀϾøÀÌ ´Ù¸¥ ÇÁ·Î±×·¥À¸·Î ºÎÅÍ »ý¼ºµÈ ¹®ÀÚ¿ µîÀÇ µ¥ÀÌÅ͸¦ Ç¥ÁØÀÔ·ÂÀ¸·Î ¹Þ¾Æ¼ °£´ÜÈ÷ ó¸®ÇÒ ¼ö ÀÖ´Ù. 8 ¹®Á¦
Ç¥ÁØÀÔ·ÂÀ¸·Î ¹®ÀÚ¿À» ÀԷ¹޾Ƽ ¸î°³ÀÇ ¹®ÀÚ°¡ ÀԷµǾú´ÂÁö¸¦ °è¼öÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇ϶ó. 9 ÆÄÀÏ º¹»çÇϱâ
Áö±Ý±îÁöÀÇ ÆÄÀÏ ÀÔÃâ·ÂÀÛ¾÷Àº Űº¸µå³ª ÆÄÀÏ·Î ºÎÅÍ ÀÔ·Â ¹Þ¾Æ¼, ¸ð´ÏÅͷΠǥÁØÃâ·Â ÇÏ´Â °Í¿¡ ´ëÇØ¼¸¸ ¾Ë¾Æº¸¾Ò´Ù. ÀÌÁ¦ Ç¥ÁØÃâ·ÂÀÌ ¾Æ´Ñ ÆÄÀÏ·Î Ãâ·Â ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.
À¯´Ð½º¿¡¼´Â ¸ð´ÏÅͳª ÆÄÀÏÀ̳ª ¸ðµÎ µ¿ÀÏÇÏ°Ô ÆÄÀÏ·Î ÀÔ·ÂÇϱ⠶§¹®¿¡, Ç¥ÁØÃâ·Â°ú ¸¶Âù°¡Áö·Î write()ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼, ÆÄÀÏ·Î ¾µ¼ö ÀÖ´Ù. ´Ù¸¥Á¡À̶ó¸é, ÀÌ¹Ì ¿·ÁÀִ ǥÁØÃâ·Â°ú´Â ´Ù¸£°Ô, ÆÄÀÏÃâ·ÂÀÇ °æ¿ì ¾²°íÀÚ ÇÏ´Â ÆÄÀÏÀ» Á÷Á¢ ¿¾îÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù.
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> // »ç¿ëÇϱ⠽±µµ·Ï Ç¥ÁØÀÔ·Â,Ãâ·Â,¿¡·¯¸¦ ´Ù¸¥ À̸§À¸·Î Á¤ÀÇ ÇÑ´Ù. #define STDIN 0 #define STDOUT 1 #define STDERR 2 int main(int argc, char **argv) { char *orgfile, *dstfile; int rfd, wfd; int readn; char buf[80]; // ÀÎÀÚ·Î ¿øº»ÆÄÀϰú º¹»çÆÄÀÏ À̸§À» ¹Þ´Â´Ù. // src fileÀÌ dst file·Î º¹»çµÈ´Ù. if (argc != 3) { printf("Usage : %s [src file] [dst file]\n", argv[0]); return 1; } // filename ÀÌ argv[1] À» °¡¸®Å²´Ù. // argv[1] À» ±×´ë·Î »ç¿ëÇØµµ µÇ°ÚÁö¸¸, ÄÚµåÀÇ °¡µ¶¼ºÀ» À§Çؼ // ´Ù¸¥ º¯¼öÀ̸§À» »ç¿ëÇϵµ·Ï Çß´Ù. orgfile = argv[1]; dstfile = argv[2]; // ¿øº» ÆÄÀÏÀ» ÀбâÀü¿ë ¸ðµå·Î ¿¬´Ù. rfd = open(orgfile, O_RDONLY); // ¿¡·¯ üũ¸¦ ÇÑ´Ù. if (rfd < 0) { perror("org file open err :"); return 0; } // º¹»çÆÄÀÏÀº ¾²±âÀü¿ëÀ¸·Î ¿¬´Ù. // º¹»çÆÄÀÏÀÇ ±ÇÇÑÀº 00700 Áï »ç¿ëÀÚ¿¡°Ô Àбâ,¾²±â,½ÇÇà ±ÇÇÑÀ» ÁØ»óÅ·ΠÇÑ´Ù. wfd = open(dstfile, O_WRONLY|O_CREAT,S_IRWXU); // ¿¡·¯ üũ¸¦ ÇÑ´Ù. if (wfd < 0) { perror("dst file open err :"); return 0; } // ¿øº»ÆÄÀÏ·Î ºÎÅÍ µ¥ÀÌÅ͸¦ ÀÐÀº´ÙÀ½ // ÀоîµéÀÎ µ¥ÀÌÅÍÀÇ Å©±â¸¸Å º¹»çÆÄÀÏ¿¡ ¾´´Ù. while((readn = read(rfd, buf, 80)) > 0) { write(wfd, buf, readn); } close(rfd); close(wfd); return 1; }À§ Äڵ带 ÄÄÆÄÀÏ ÇÑ´ÙÀ½ Å×½ºÆ®Çغ¸µµ·Ï ÇÏÀÚ. # ./mycopy mycopy.c mycopy.bak |
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|