ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
ÆÄÀÏ ½ºÆ®¸²°ú ÆÄÀÏ Áö½ÃÀÚ
½Ã½ºÅÛ ÇÁ·Î±×·¥ ÆÄÀϰü·Ã ÀÛ¾÷À» ÇÒ¶§, ¿ì¸®´Â int ÇüÀÇ ÆÄÀÏ ÁöÁ¤ ¹øÈ£¸¦ µ¹·ÁÁÖ ´Â open °è¿ ÇÔ¼ö¿Í ÆÄÀÏ ½ºÆ®¸²ÀÎ FILEÀ» µ¹·ÁÁÖ´Â fopen °è¿ ÇÔ¼ö Áß ¼±ÅÃÇØ¼ ÀÔÃâ·Â ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù.
ÀÌ ¹®¼´Â fopen °è¿ ÇÔ¼ö¿Í open °è¿ ÇÔ¼ö¿ÍÀÇ Â÷ÀÌÁ¡°ú ¾î¶°ÇÑ ÀåÁ¤°ú ´ÜÁ¡À» °¡Áö´ÂÁö¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.
±âº»ÀûÀ¸·Î À¯´Ð½º¿¡¼´Â ¸ðµç °ÍÀ» ÆÄÀϷΠó¸®ÇÑ´Ù. ÀÌ´Â ¸ðµç Ç¥ÁØÀÔÃâ,Ç¥ÁØÃâ·Â(:12),Ç¥ÁØ¿¡·¯(:12),ÆÄÀÏ(:12), ¼ÒÄÏ¿¡ µ¿ÀÏÇÏ°Ô Àû¿ëµÈ´Ù.
´ÙÀ½Àº zipcodeÀÇ fork ¹öÁ¯À» 4444 ¹ø port ·Î ½ÇÇà½Ã۰í, zipcode ÀÇ ÇÁ·Î¼¼½º »óȲÀ» Ãâ·ÂÇÑ °á°ú ÀÌ´Ù. zipcode ÀÇ fork ¹öÁ¯Àº ´ÙÁß¿¬°á¼¹ö ¸¸µé±âÀÇ ¼¹öÇÁ·Î±×·¥ÀÌ´Ù. [yundream@coco test]$ ./zipcode_m Usage : ./zipcode [port] ¿¹ : ./zipcode 4444 [yundream@coco test]$ ./zipcode_m 4444
À§¿Í °°ÀÌ ¼¹öÇÁ·Î±×·¥À» ½ÇÇà½Ã۰í /proc ÆÄÀϽýºÅÛÀ» ÀÌ¿ëÇØ¼ zipcode_m ÀÇ ÇÁ·Î¼¼½º Á¤º¸Áß fd Á¤º¸¸¦ Ãâ·ÂÇØ º¸¾Ò´Ù. [yundream@hum test]$ ps -aux | grep zipcode_m | grep -v grep yundream 14987 0.0 0.2 1340 376 ttyq1 S 15:02 0:00 ./zipcode_m 4444 [yundream@hum test]$ cd /proc/14987/fd ; ls -al ÇÕ°è 0 dr-x------ 2 yundream 500 0 3¿ù 18 15:15 . dr-xr-xr-x 3 yundream 500 0 3¿ù 18 15:15 .. lrwx------ 1 yundream 500 64 3¿ù 18 15:15 0 -> /dev/ttyq1 lrwx------ 1 yundream 500 64 3¿ù 18 15:15 1 -> /dev/ttyq1 lrwx------ 1 yundream 500 64 3¿ù 18 15:15 2 -> /dev/ttyq1 lr-x------ 1 yundream 500 64 3¿ù 18 15:15 3 -> /home/mycvs/test/zipcode.txt lrwx------ 1 yundream 500 64 3¿ù 18 15:15 4 -> socket:[587641]À§À§ ȸéÀ» º¸¸é ¾Ë°ÚÁö¸¸, Ç¥ÁØÀÔ·Â(0), Ç¥ÁØÃâ·Â(1), Ç¥ÁØ¿¡·¯(2), ¿¸°ÆÄÀÏ(3), ¿¸° ¼ÒÄÏ(4) ¿¡ ´ëÇØ¼ ÀÏ·ÃÀÇ ¼ýÀÚ·ÎµÈ link ÆÄÀÏÀÌ ¸¸µé¾îÁö´Â°É º¼¼ö ÀÖÀ»°ÍÀÌ´Ù. Ç¥ÁØÀÔ·Â,Ãâ·Â,¿¡·¯´Â ÀÚ½ÅÀÇ Å͹̳ÎÀ» ¸µÅ©Çϰí ÀÖÀ¸¸ç ¿¸°ÆÄÀÏÀº ÆÄÀÏ, ¼ÒÄÏÀº °íÀ¯ÀÇ ¼ÒÄϹøÈ£¸¦ ¸µÅ©Çϰí ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù.
INET(ÀÎÅͳÝ) ¼ÒÄÏÀÇ °æ¿ì¿¡´Â ¼ÒÄÏÅë½ÅÀ» À§Çؼ ÆÄÀÏÀ» »ý¼ºÇÏÁö ¾Ê°í Ä¿³Î¿¡¼ Á÷Á¢°ü¸® ÇϹǷÎ, ÆÄÀÏ·Î ¿¬°áµÇÁö ¾Ê°í, Ä¿³ÎÀÇ ¼ÒÄÏ ¹øÈ£¿¡ ¿¬°áµÈ´Ù.
Å×½ºÆ®µµ ÇÒ°â 0 ¹øÆÄÀÏ¿¡ ¾²±â¸¦ ÇѹøÇغ¸ÀÚ. [yundream@hum fd]$ echo "111" > 0 [yundream@coco test]$ ./zipcode_m 4444 111±×·¯¸é ./zipcode_m À» ½ÇÇàÇѰ÷¿¡ 111 ÀÌ Ãâ·Â µÊÀ» º¼¼ö ÀÖÀ»°ÍÀÌ´Ù. open °è¿
open °è¿ÀÇ ÇÔ¼ö´Â »ç¿ëÇÏ¸é ¹Ù·Î /proc/pid/fd ¹Ø¿¡ ÀÖ´Â ¸µÅ©ÆÄÀÏÀÇ À̸§À» int ÇüÀ¸·Î º¯È¯½ÃÄѼ µÇµ¹·ÁÁÖ¸ç, À̰ªÀ» ÀÌ¿ëÇØ¼ ¿ì¸®´Â ¿©·¯°¡Áö ÀÔÃâ·Â ÀÛ¾÷À» ÇÒ¼ö ÀÖ°Ô µÇ´Â°ÍÀÌ´Ù.
open °è¿ÀÇ ÇÔ¼öµéÀº ½Ã½ºÅÛ È£Ãâ·Î ¿î¿µÃ¼Á¦¿¡ Á÷Á¢ ¿äûÀ» ÇϹǷΠÀú ¼öÁØ ÀÔÃâ·Â ÇÔ¼ö¶ó°í ºÎ¸¥´Ù. Àú ¼öÁØ ÀÔÃâ·Â ÇÔ¼öµéÀ» Á¤¸®ÇØ º¸¾Ò´Ù. À̵é ÇÔ¼ö´Â ´Ü¼øÇϸç, ÇÏ´Â ÀÏÀÌ ¸íÈ®ÇÏ°í ºü¸£°í °·ÂÇÏ´Ù.
ÀÌó·³ open °è¿À» »ç¿ëÇÏ¸é °¢°¢ÀÇ ÀÔÃâ·Â ÆÄÀÏÀ» Á÷Á¢ ¿¢¼¼½º ÇÒ¼ö ÀÖÀ¸¹Ç·Î, Àú¼öÁØÀÇ ÀÛ¾÷, ¿¹¸¦µé¸é select, polling, ÆÄÀÏÀá±Ý, ·¹ÄÚµåÀá±Ý, ÆÄÀϼӼºº¯°æµîÀÇ ÆÄÀÏÀ» ´Ù·ç±â À§ÇÑ ¼¼¼¼ÇÑ ÀϵéÀ» ÇÒ¼ö ÀÖ´Â ÀåÁ¡À» ¾ò°Ô µÈ´Ù.
¹Ý¸é ´ÜÁ¡À» °¡Áö´Âµ¥, Àú¼öÁØÀ¸·Î ÆÄÀÏÀ» ´Ù·ç´Ù º¸´Ï °£´ÜÇÑ ÀÏÀ» Çұ⿡´Â ³Ê¹« ÀܼÕÀÌ ¸¹ÀÌ °£´Ù¶ó´Â Á¡ÀÌ´Ù.
°£´ÜÇÑ ÇàÀÔ·ÂÀ» ¹Þ´Â ÇÁ·Î±×·¥À» ¸¸µç´Ù°í »ý°¢Çغ¸ÀÚ, open À» »ç¿ëÇÏ°Ô µÇ¸é °³Ç๮ÀÚ °Ë»ç¸¦ À§Çؼ ÀԷ¹ÞÀº ¹®ÀÚ¸¦ ¹ÙÀÌÆ®´ÜÀ§·Î ºñ±³¸¦ ÇØÁÖ´Â ¼ö°í½º·¯¿òÀ» °¨¼öÇØ¾ß Çϸç, º°µµ·Î ¹öÆÛ °ü¸®¸¦ ÇØÁÖ¾î¾ß ÇÒ°ÍÀÌ´Ù. fopen °è¿
ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ(¹Ýµå½Ã À§ÀÇ ¹®Á¦¶§¹®¿¡ ³ª¿Â°Í ¸¸Àº ¾Æ´ÏÁö¸¸), f°è¿ ÀÇ Á»´õ °í¼öÁØÀÇ ÇÔ¼öµéÀ» Á¦°øÇÑ´Ù. ÀÌ ÇÔ¼öµéÀº °í ¼öÁØ ÀÔÃâ·Â ÇÔ¼öȤÀº Ç¥ÁØ ÀÔÃâ·Â ÇÔ¼ö¶ó°í ºÎ¸¥´Ù.
Ç¥ÁØ ÀÔÃâ·Â ÇÔ¼öµéÀº ÆÄÀÏÀ» ½ºÆ®¸² (È帧)À¸·Î ´Ù·é´Ù. FILE µ¥ÀÌÅÍ ÇüÀº fopen ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÆÄÀÏ¿±â¿¡ ¼º°øÇßÀ»¶§ ÇØ´ç ÆÄÀÏÀ» ½ºÆ®¸²À» °¡¸®Å²´Ù. /usr/include/stdio.h ¸¦ ¿¾îº¸¸é ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù. /* The opaque type of streams. This is the definition used elsewhere. */ typedef struct _IO_FILE FILE;struct _IO_FILE ´Â liblo.h ¿¡ ¼±¾ðµÇ¾î Àִµ¥, ¸â¹öº¯¼ö°¡ ²Ï ¸¹À¸´Ï Á÷Á¢ »ìÆì º¸±â¹Ù¶õ´Ù. _IO_FILE ±¸Á¶Ã¼¸¦ º¸¸é ÆÄÀÏÁö½ÃÀÚ¿Í ÇÔ²², ÆÄÀÏ ÀÔÃâ·ÂÀ» À§ÇÑ ¸¹Àº ¹öÆÛ¸¦ º°µµ·Î °ü¸®Çϰí ÀÖÀ½À» ¾Ë¼ö Àִµ¥ fopen °è¿ÇÔ¼ö¸¦ ÀÌ¿ëÇϸé, ÀÌ·¯ÇÑ ±¸Á¶Ã¼ÀÇ Á¦¾î¸¦ ¾Ë¾Æ¼ ÇØÁØ´Ù.
°á·ÐÀûÀ¸·Î ÆÄÀÏÀ» °´Ã¼·Î ´Ù·ç°Ô µÊÀ¸·Î ÀܼÕÁúÀ» ´ú¼ö ÀÖ°Ô µÈ´Ù.
¿¹Á¦ : fopen.c #include <unistd.h> #include <stdlib.h> #include <stdio.h> int main() { FILE *fp; char buf[256]; printf("³¡³¾·Á¸é ^D\n"); while(fgets(buf, 256, stdin) != NULL) { printf("%s", buf); } } FILE °ú ÆÄÀÏÁö½ÃÀÚ »çÀÌÀÇ º¯È¯
ÃÖÃÊ¿¡ Àú ¼öÁØ ÇÔ¼ö·Î ÆÄÀÏÀ» ´Ù·ê Çʿ䰡 ÀÖ¾î¼ openÇÔ¼ö¸¦ ÀÌ¿ëÇß´Ù°í ÇÏ´õ¶óµµ, Á¦¾î´Â Ç¥ÁØ ÀÔÃâ·Â ÇÔ¼ö¸¦ »ç¿ëÇÏ°í ½ÍÀ» ¶§°¡ ÀÖÀ» °ÍÀÌ´Ù.
³×Æ®¿öÅ© ÇÁ·Î±×·¥À» »ý°¢ÇØ º¸ÀÚ. ¼ÒÄÏÀº socket(2)ÇÔ¼ö·Î ¸¸µå´Âµ¥, ÀÌ ÇÔ¼ö´Â ¼ÒÄÏ ÁöÁ¤ ¹øÈ£¸¦ ¹ÝȯÇÑ´Ù. À̶§ ¹®ÀÚ¿ µ¥ÀÌÅ͸¦ ¼·Î ÁÖ°í ¹Þ´Â´Ù°í Çϸé Àú ¼öÁØ ÀÔÃâ·Â ÇÔ¼ö º¸´Ù´Â Ç¥ÁØ ÀÔÃâ·Â ÇÔ¼ö¸¦ »ç¿ëÇÏ°í ½ÍÀ» ¶§°¡ ÀÖÀ» °ÍÀÌ´Ù. ÈξÀ ½±°Ô ó¸®ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|