ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
JOINC FAQ

Myundream_at_joinc.co.kr

¹Ýº¹ÀûÀ¸·Î ÀÚÁÖ ¿Ã¶ó¿À´Â Áú¹®µé¿¡ ´ëÇÑ FAQ¸¦ ÀÛ¼ºÇÏ·Á ÇÕ´Ï´Ù. Q&A°Ô½ÃÆÇ°ú joincÀÇ ±â»çµéÀ»
Â÷°í·ÎÇØ¼­ ¸¸µé¾î ³ª°¥ »ý°¢ÀÔ´Ï´Ù. ¸¹ÀÌ Âü¿©ÇØ ÁÖ¼¼¿ä..
Âü°í »çÀÌÆ®
[http]JOINC °Ô½ÃÆÇ
[http]KLDP BBS
[http]¸®´ª½º FAQ ¾ÆÄ«À̺ê

Contents

1 ¸®´ª½º ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö FAQ
1.1 ÄÄÆÄÀÏ ³¯Â¥ Ãâ·ÂÇϱâ
1.2 ¸ðµç ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ Á¾·á ½Ã۱â
1.3 ÀϹÝÀ¯Àú ½ÇÇàÀ¸·Î ½´ÆÛÀ¯ÀúÀÛ¾÷ÀÇ ¼öÇà
1.4 ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â ¶óÀ̺귯¸® ¸ñ·Ï ¾ò±â
1.5 open()À¸·Î ¿­ ¼ö ÀÖ´Â ÃÖ´ë ÆÄÀÏÀÇ °¹¼ö
1.6 ¾²·¹µå°£ °øÀ¯ µ¥ÀÌÅÍ º¸È£
1.7 ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á°ª ¾Ë¾Æ¿À±â
1.8 ³íºí·°(none block)»óÅ·ΠÆÄÀÏ °ü·Ã ÀÛ¾÷Çϱâ
1.9 ÀÔ·Â ¹®ÀÚ¿­ÀÌ È­¸é¿¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï
1.10 ¸®´ª½º ÄܼÖÀÇ È­¸éº¸È£±â ²ô°Å³ª ¼³Á¤Çϱâ
1.11 ¹®ÀÚ¿­ ¾Ïȣȭ Çϱâ
1.12 ÆÄÀÏ Àá±×±â
1.13 ¿ÜºÎ ÇÁ·Î±×·¥ÀÇ ½ÇÇà
1.14 ¿ÜºÎ ÇÁ·Î±×·¥°úÀÇ ¾ç¹æÇâ Åë½Å
1.15 ÇÁ·Î±×·¥ÀÇ Á¾·á»óÅ ¾Ë¾Æº¸±â
1.16 ¸ðµâº° ºÐÇÒ ÄÄÆÄÀÏ
1.17 ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ ¸®´ª½º ¹èÆ÷ÆÇ ÃßÃµÇØ ÁÖ¼¼¿ä
1.18 ¸Þ¸ð¸®ÀÇ ÀçÇÒ´ç
1.19 ¿¬°áÀ» Á¾·áÇÑ ÈÄ¿¡µµ °è¼Ó ³²¾ÆÀÖ´Â ÇÁ·Î±×·¥À» ¸¸µé°í ½Í½À´Ï´Ù
1.20 µ¥¸ó(Daemon) ÇÁ·Î¼¼½º¶õ°Ô ¹¹ÁÒ?
1.21 Linux¿¡¼­ ¸¸µç ÇÁ·Î±×·¥ÀÇ Unix·ÎÀÇ Æ÷ÆÃ
1.22 link(2)ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ÆÄÀÏÀ» º¹»çÇÏ·Á°í Çϴµ¥ º¹»ç°¡ ¾ÈµË´Ï´Ù.
1.23 ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® »ç¿ë·®, CPUÁ¡À¯À²°ú °°Àº Á¤º¸¸¦ ¾ò¾î¿À°í ½Í½À´Ï´Ù.
1.24 Å͹̳ÎÀÇ Ã¢Å©±â¸¦ ¾Ë¾Æ¿À´Â ¹æ¹ýÀÌ ¾øÀ»±î¿ä ?
1.25 ÇÁ·Î±×·¥ÀÌ ¹ÞÀ» ¼ö ÀÖ´Â ÀÎÀÚÀÇ ÃÖ´ë ±æÀÌ´Â
1.26 ¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇà½Ã۰í Ãâ·Â°á°ú¸¦ °¡Á®¿À·Á¸é ?
1.27 ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ »ý¼º½Ãų ¼ö ÀÖ´Â ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ °¹¼ö
1.28 ÇÁ·Î±×·¥ ÀÎÀÚ¸¦ ó¸®ÇÏ´Â ÁÁÀº ¹æ¹ýÀÌ ÀÖ´ÂÁö¿ä
1.29 ¸®´ª½º¿¡µµ À©µµ¿ìÁîÀÇ dll °°Àº°Ô ÀÖ³ª¿ä ?
1.30 ½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀ̶õ
1.31 ¾î¼Àºí¸®·Î ÀÎÀÚ(argc, argv¶ó°í ºÒ¸®¿ì´Â °Í)¸¦ ¹ÞÀ¸·Á¸é
1.32 ½Ã½ºÅÛ ÄÝÀÌ ¹«¾ùÀÌÁÒ?
1.33 ÇöÀçµð·ºÅ丮ÀÇ ÇϺο¡¼­ °°Àº ÆÄÀϸíÀÇ ÆÄÀϵéÀ» ã¾Æº¼¶§
1.34 ´Ù¸¥ ÇÔ¼ö·ÎÀÇ goto?
1.35 Á»ºñ ÇÁ·Î¼¼½º ÅðÄ¡Çϱâ
1.36 ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ ±³È¯
1.37 µ¿±â¿Í ºñµ¿±â¿¡ ´ëÇØ¼­
1.38 µ¿½Ã¿¡ ¿©·¯°³ÀÇ ÀÔ/Ãâ·ÂÀ» ´Ù·ç°í ½ÍÀ»¶§
1.39 ÇÁ·Î¼¼½º¿Í ½º·¹µåÀÇ Â÷ÀÌ
1.40 ¸®´ª½º¿¡¼­ÀÇ ½º·¹µå Áö¿ø
1.41 BSD IPC¿Í System V IPC¿ÍÀÇ Â÷ÀÌÁ¡Àº ?
1.42 À¯´Ð½º µµ¸ÞÀÎ ¼ÒÄÏÀÌ ¹«¾ùÀÌÁÒ ?
1.43 ÇöÀç À¯´Ð½º ½Ã½ºÅÛ ½Ã°£ ¾Ë¾Æ¿À´Â ¹æ¹ý
1.44 ÆÄÀÏÀÇ Á¤º¸ ¾ò¾î¿À±â
1.45 »ç¿ëÀÚ ·Î±×ÀÎ Á¤º¸ ¾ò¾î¿À±â
1.46 select¿Í pollÀÇ Â÷ÀÌÁ¡
1.47 °£´ÜÇÑ DB ½Ã½ºÅÛ¿¡ ´ëÇØ¼­
1.48 Segmentation fault
1.49 Oracle DBÇÁ·Î±×·¡¹Ö
1.50 signalÀ» º¸³½ ÇÁ·Î¼¼½ºÀÇ PID°¡Á®¿À±â
1.51 µ¿±â ÀÔÃâ·Â°ú ºñµ¿±â ÀÔÃâ·ÂÀÇ Â÷ÀÌ
1.52 ½Ã±×³Î(signal)ÀÌ ¹«¾ùÀΰ¡¿ä ?
1.53 ½Ã±×³ÎÀ» ÀÒ¾î¹ö¸®´Â °Í °°½À´Ï´Ù.?
1.54 ÆÄÀÏ º¯°æ °Ë»ç
1.55 ½Ã½ºÅÛÇÁ·Î±×·¡¹ÖÀ» Çϴµ¥ assembly¾îµµ °øºÎÇØ¾ß Çϳª¿ä?
1.56 °£´ÜÇÑ ¿î¿µÃ¼Á¦ Á¤º¸¸¦ ¾ò¾î¿À°í ½Í½À´Ï´Ù
1.57 Á¤Àû ¶óÀ̺귯¸®¿Í µ¿Àû¶óÀ̺귯¸®ÀÇ Â÷ÀÌÁ¡
1.58 ¶óÀ̺귯¸® ¾ÆÄ«À̺ê(archive) ¸¸µé±â
1.59 µ¿Àû ¶óÀ̺귯¸® ¸¸µå´Â ¹ý
1.60 beep(ºñÇÁ)À½ ¿ï¸®°Ô Çϱâ
1.61 ȯ°æº¯¼ö¿¡ ´ëÇØ¼­
1.62 C Äڵ忡¼­ Àüü ȯ°æº¯¼ö ¾ò¾î¿À±â
2 ÃÖ±Ù º¯µ¿ »çÇ×

1 ¸®´ª½º ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö FAQ

1.1 ÄÄÆÄÀÏ ³¯Â¥ Ãâ·ÂÇϱâ

  • µð¹ö±ë¿ëµµ µîÀ¸·Î »ç¿ëÇϱâ À§Çؼ­ ½ÇÇà ÇÁ·Î±×·¥ÀÇ ÄÄÆÄÀÏ ³¯Â¥¸¦ Ãâ·ÂÇϵµ·Ï ÇÏ°í ½Í½À´Ï´Ù. ÇϵåÄÚµùÀº ÁÁÀº ¹æ¹ýÀÌ ¾Æ´Ñ°Í °°Àºµ¥...

int main(void) 
{ 
    fprintf(stdout, "%s %s\n", __DATE__, __TIME__); 
    return 1; 
} 
 

1.2 ¸ðµç ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ Á¾·á ½Ã۱â

  • ºÎ¸ðÇÁ·Î¼¼½º¿¡¼­ ¿©·¯°³ÀÇ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼º½ÃÄ×½À´Ï´Ù. ºÎ¸ð ÇÁ·Î¼¼½º°¡ Á×¾úÀ» ¶§, ¸ðµç ÀÚ½Ä ÇÁ·Î¼¼½ºµµ Á¾·áÇϵµ·Ï Çϰíǵ¥, ¾î¶±ÇØ¾ß ÇÒ±î¿ä.

ÇÁ·Î¼¼½º´Â º¸Åë signalÀ» ¹Þ°í Á¾·áµÉ°Ì´Ï´Ù. ±×·¸´Ù¸é ÇØ´ç Á¾·á ½Ã±×³Î¿¡ ´ëÇØ¼­ ¸ðµç ÀÚ½Ä ÇÁ·Î¼¼½º¿¡°Ô ½Ã±×³ÎÀ» º¸³»´Â ½Ã±×³Î Çڵ鷯¸¦ ¼³Ä¡ÇÏ¸é µË´Ï´Ù. kill(2)½Ã½ºÅÛ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. ÀÚ½Ä ÇÁ·Î¼¼½º´Â ¹°·Ð ÇØ´ç ½Ã±×³ÎÀ» ¹Þ¾ÒÀ» ¶§ Á¾·áÇϵµ·Ï ÄÚµù µÇ¾î ÀÖ¾î¾ß °ÚÁÒ ?

1.3 ÀϹÝÀ¯Àú ½ÇÇàÀ¸·Î ½´ÆÛÀ¯ÀúÀÛ¾÷ÀÇ ¼öÇà

  • ÀϹÝÀ¯Àú·Î ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄ×Áö¸¸, ½´ÆÛÀ¯Àú±ÇÇÑÀ¸·Î ÆÄÀÏÀ» ¼öÁ¤ÇØ¾ß ÇÒ°æ¿ì ¾î¶»°Ô ÇØ¾ß Çϳª¿ä ? (ÀϹÝÀ¯Àú°¡ ÀåÄ¡¸¦ ¸¶¿îÆ® ½Ãų ¼ö ÀÖ´Â ÇÁ·Î±×·¥À» ¸¸µé·Á°í ÇÕ´Ï´Ù.)

chown(1)À» ÀÌ¿ëÇØ¼­ ÇØ´ç ½ÇÇà ÇÁ·Î±×·¥¿¡ SID¸¦ ÁÖ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î myprg¶ó´Â ÇÁ·Î±×·¥¿¡ SID¸¦ ÁÖ±æ ¿øÇÑ´Ù¸é
# chown +s myprg  
# ls -al 
-r-sr-xr-x    1 root    root        16336  2¿ù 14  2003 myprg  
 
±×·¯¸é ÀϹݻç¿ëÀÚ°¡ myprg¸¦ ½ÇÇà½ÃŰ´õ¶óµµ ÇÁ·Î±×·¥ÀÇ »ç¿ëÀÚ±ÇÇÑÀÎ root±ÇÇÑÀ» °¡Áú ¼ö ÀÖ°Ô µË´Ï´Ù. ÆíÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ ÀϹÝÀ¯Àú°¡ ·çÆ®±ÇÇÑÀ» °¡Áú ¼ö ÀÖ´Ù´Â °Í ¶§¹®¿¡ º¸¾È Ãë¾àÁ¡ÀÌ »ý±æÈ®·üÀÌ Å®´Ï´Ù. °¡´ÉÇÏ¸é »ç¿ëÀ» ÇÇÇØ¾ß ÇÏ°í ¹Ýµå½Ã »ç¿ëÇØ¾ßÇÒ °æ¿ì¶ó¸é ÁÖÀǸ¦ ±â¿ï¿©¼­ Äڵ带 ¸¸µé¾î¾ß ÇÕ´Ï´Ù.

  1. ¾ÈÀüÇÑ ÇÁ·Î±×·¡¹Ö

1.4 ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â ¶óÀ̺귯¸® ¸ñ·Ï ¾ò±â

  • ƯÁ¤ ÇÁ·Î±×·¥ÀÌ ¾î¶² ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´ÂÁö ¾Ë ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖ³ª¿ä?

ldd¸¦ ÀÌ¿ëÇÏ½Ã¸é µË´Ï´Ù. ¿¹¸¦ µé¾î¼­ /bin/ls°¡ »ç¿ëÇÏ´Â ¶óÀ̺귯¸®¸¦ ¾Ë°í ½Í´Ù¸é ¾Æ·¡¿Í °°ÀÌ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
# ldd /bin/ls 
  libtermcap.so.2 => /lib/libtermcap.so.2 (0x4002b000) 
  libc.so.6 => /lib/tls/libc.so.6 (0x42000000) 
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 
 

1.5 open()À¸·Î ¿­ ¼ö ÀÖ´Â ÃÖ´ë ÆÄÀÏÀÇ °¹¼ö

  • ÇÁ·Î¼¼½º°¡ ¿­¼ö ÀÖ´Â ÃÖ´ëÀÇ ÆÄÀÏ °¹¼ö¸¦ ¾Ë¾Æ º¸·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä ? ±×¸®°í ÃÖ´ë ÆÄÀÏ °¹¼ö¸¦ ´Ã¸®´Â ¹æ¹ýÀº ¾øÀ»±î¿ä ?

ulimit¸¦ ÀÌ¿ëÇÏ¸é ¿Àǰ¡´ÉÇÑ ÆÄÀÏÀÇ °¹¼ö¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. º¸ÅëÀº 1024°¡ Á¦ÇÑÀε¥ ÀÌÁß 0,1,2´Â ±âº»ÀûÀ¸·Î »ý¼ºµÇ¹Ç·Î ½ÇÁ¦ ¿ÀÇ °¡´ÉÇÑ °¹¼ö´Â 1021°³ °¡ µË´Ï´Ù.
[root@yundream root]# ulimit -a 
core file size        (blocks, -c) 0 
data seg size         (kbytes, -d) unlimited 
file size             (blocks, -f) unlimited 
max locked memory     (kbytes, -l) unlimited 
max memory size       (kbytes, -m) unlimited 
... 
 

1.6 ¾²·¹µå°£ °øÀ¯ µ¥ÀÌÅÍ º¸È£

  • 3°³ÀÇ ¾²·¹µå°¡ Àü¿ªÀ¸·Î ¼±¾ðµÇ¾î ÀÖ´Â ¸Þ¸ð¸® °ø°£(Á¤È®ÇϰԴ ±¸Á¶Ã¼)¸¦ °øÀ¯ÇÕ´Ï´Ù. °øÀ¯µÇ´Â µ¥ÀÌÅÍ ¿µ¿ªÀ» º¸È£ÇؾßÇÒ Çʿ䰡 Àִµ¥ ¾î¶»°Ô ÇØ¾ß ÇÒ·±Áö¿ä.

º¸ÅëÀº mutex¿Í Á¶°Ç º¯¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. ¼¼¸¶Æ÷¾î¸¦ »ç¿ëÇÒ ¼öµµ ÀÖÁö¸¸ ³í¿Ü·Î ÇϰڽÀ´Ï´Ù. ´ÙÀ½ ³»¿ëµéÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.
  1. http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_pthread_mutex_Á¶°Çº¯¼ö
  2. http://www.joinc.co.kr/modules/moniwiki/wiki.php/pthread_API
  3. http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_pthread%202


1.7 ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á°ª ¾Ë¾Æ¿À±â

  • fork()·Î ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÑÈÄ ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á°ªÀ» ¾Ë°íÀÚ ÇÕ´Ï´Ù. ½©¿¡¼­´Â echo $?·Î Çϸé Á¾Àü ½ÇÇàÇÑ ÇÁ·Î¼¼½ºÀÇ Á¾·á°ªÀ» ¾Ë ¼ö Àִµ¥, ÇÁ·Î±×·¥ »ó¿¡¼­ °¡´ÉÇÑÁö¿ä.

wait(2)¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. wait()´Â ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á¸¦ ±â´Ù¸®´Â ÇÔ¼ö·Î ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á°ªÀ» °¡Á®¿É´Ï´Ù.
  1. Zombie¿¡ ´ëÇÑ °íÂû
  2. wait(2)


1.8 ³íºí·°(none block)»óÅ·ΠÆÄÀÏ °ü·Ã ÀÛ¾÷Çϱâ

  • ¼ÒÄÏÇÁ·Î±×·¡¹ÖÀ» Çϴµ¥ write(2), read(2)´Â ÀÀ´äÀÌ ¿Ã¶§ ±îÁö ±â´Ù¸®Àݾƿä. ÀÌ°É ºí·°µÇÁö ¾Ê°í ¹Ù·Î ¸®ÅÏÇϵµ·Ï ÇÏ°í ½Í½À´Ï´Ù.

fcntl(2)À» ÀÌ¿ëÇÏ¸é µË´Ï´Ù.
// ±âÁ¸ ÆÄÀÏÀÇ °ªÀ» ¾ò¾î¿Â´ÙÀ½ 
// NONBLOCKÀ» Ãß°¡½ÃŲ´ÙÀ½ À̸¦ Àû¿ë½ÃŰ´Â ÄÚµå. 
int value = fcntl(0, F_SETFL, 0)  
value != O_NONBLOCK;  
fcntl (0, F_SETFL, value); 
 

  1. http://www.joinc.co.kr/modules.php?name=News&file=article&sid=80

1.9 ÀÔ·Â ¹®ÀÚ¿­ÀÌ È­¸é¿¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï

  • ¸¸µå´Â ÇÁ·Î±×·¥¿¡¼­ ÀÎÁõÀ» À§Çؼ­ ¾ÆÀ̵ð¿Í ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇÏ´Â ºÎºÐÀÌ ÀÖ½À´Ï´Ù. ¹®Á¦´Â ÆÐ½º¿öµå°¡ È­¸é¿¡ ±×´ë·Î Ãâ·ÂµÈ´Ù´Â °Çµ¥, ÀÌ°É Ãâ·ÂµÇÁö ¾Êµµ·Ï Çϰųª *°ú °°Àº ¹®ÀÚ¿­·Î ´ëÄ¡µÇ¾î¼­ ³ª¿Àµµ·Ï ÇÒ ¼ö ¾ø´Â °ÇÁö¿ä.

Å͹̳ÎÀ» ÀÔ·ÂÀ» ¹ÝÇâ(echo)ÇÏÁö ¾Êµµ·Ï º¯°æÇÏ¸é µË´Ï´Ù. termios¿¡¼­ Á¦°øÇÏ´Â tcgetattr(3), tcsetattr(3)ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù.

  1. Code_C_inputpass
  2. [http]Å͹̳ΠÁ¦¾î

1.10 ¸®´ª½º ÄܼÖÀÇ È­¸éº¸È£±â ²ô°Å³ª ¼³Á¤Çϱâ

  • ¸®´ª½º Äֿܼ¡¼­ ÀÔ·ÂÀÌ ÀüÇô ¾øÀ»¶§ ƯÁ¤ ½Ã°£¸¸ È帣¸é È­¸éÀÌ °ËÀº»öÀÌ µË´Ï´Ù. ¹°·Ð ´Ù½Ã Űº¸µå ÀÔ·ÂÀ» ÇÏ¸é µ¹¾Æ¿ÀÁö¸¸ ÀÌ ¼³Á¤À» ²ô°Å³ª ½Ã°£À» ¼³Á¤ÇÏ°í ½Í½À´Ï´Ù. ÀÌ·²¶© ¾îÂî ÇÏ¿À¸®±î?
    1. ¿ì¼± ƯÁ¤ ½Ã°£ÀÌ Áö³ªµµ È­¸éÀÌ Blank »óŰ¡ µÇÁö ¾Êµµ·Ï ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ¸í·ÉÀ» ÀÔ·ÂÇÕ´Ï´Ù.

      bash# setterm -blank 0 
       
    2. ƯÁ¤½Ã°£ÀÌ µÇ¸é Blank°¡ µÇµµ·Ï ÇÏ·Á¸é ºÐ´ÜÀ§·Î 1 ~ 60ºÐ±îÁö ÁöÁ¤°¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¾î 10ºÐµ¿¾È ÀÔ·ÂÀÌ ¾øÀ»¶§ Blank»óÅ·ΠÁøÀÔÇϵµ·Ï ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ¸í·ÉÀ» ÀÔ·ÂÇÕ´Ï´Ù.

      bash# setterm -blank 10 
       
    3. Áï, setterm ¸í·ÉÀ» ÀÌ¿ëÇÏ¸é ¿©·¯°¡Áö ÄֻܼóÀÇ ¼³Á¤À» º¯°æÇÒ¼ö ÀÖÀ¸¸ç blank±â´ÉÀº -blank¿É¼ÇÀ» »ç¿ëÇÏ¿© ¼³Á¤°¡´ÉÇÕ´Ï´Ù. ¿©±â¼­ 0Àº off¸¦ ÀǹÌÇϸç 1 ~ 60±îÁöÀÇ ¼ýÀÚ´Â ºÐÀ» ÀǹÌÇÕ´Ï´Ù. ±× ÀÌ»óÀÇ °ªÀº Á¤ÀǵÇÁö ¾Ê°Å³ª ÇØ´ç ¸Þ´º¾óÀ» µû·Î ÂüÁ¶Çϼ¼¿ä.

1.11 ¹®ÀÚ¿­ ¾Ïȣȭ Çϱâ

  • ¾ÆÀ̵ð/ÆÐ½º¿öµå ¹æ½ÄÀÇ ÀÎÁõÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù. À̵é Á¤µµ´Â ÆÄÀÏ¿¡ ÀúÀåµÇ°í ÀÎÁõ ¿äûÀÌ µé¾î¿À¸é ºñ±³ÇÏ´Â ¹æ½ÄÀ» »ç¿ëÇϴµ¥, ÆÄÀÏ¿¡ ÀúÀåµÇ´Â ÆÐ½º¿öµå¸¦ ¾Ïȣȭ ÇØ¼­ ÀúÀåÇØ¾ß ÇÒ°Í °°½À´Ï´Ù. Àû´çÇÑ ¹æ¹ý ºÎʵ右´Ï´Ù.

crypt(3)ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. DES ´Ü¹æÇâ ÇØ½¬¾Ë°í¸®ÁòÀ» »ç¿ëÇØ¼­ º¹È£È­°¡ ºÒ°¡´É Çϵµ·Ï ¾ÏȣȭµË´Ï´Ù. ÀÌ·± Ư¼ºÀ¸·Î ÆÐ½º¿öµå ¾Ïȣȭµî¿¡ À¯¿ëÇÏ°Ô »ç¿ëµË´Ï´Ù.
  1. cryptÀÇ »ç¿ë

1.12 ÆÄÀÏ Àá±×±â

  • ÆÄÀÏ¿¡ ·Î±×¸¦ ³²±â´Â ¼­¹ö ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ¼­¹ö ÇÁ·Î±×·¥Àº fork()·Î ¸¸µé¾îÁ® ÀÖ°í fork()µÈ ÀÚ½ÄÇÁ·Î¼¼½ºµéÀÌ µ¿ÀÏÇÑ ÆÄÀÏ¿¡ ³»¿ëÀ» ¾¹´Ï´Ù. ±×·±µ¥ ÀÌ·¸°Ô ¸î¹ø µ¹´Ù º¸´Ï ÆÄÀÏÀÇ ³»¿ëÀÌ ¼­·Î ²¿¿© ¹ö¸®´õ±º¿ä.. ¾Æ¸¶ ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ ÆÄÀÏÀ» ¾²°í ÀÖ´Â Áß¿¡ ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ½á¼­ ±×·±°Í °°Àºµ¥ Çѹø¿¡ ÇϳªÀÇ ÇÁ·Î¼¼½º¸¸ ÆÄÀÏ¿¡ Á¢±ÙÇϵµ·Ï ÇÒ ¼ö ¾ø´ÂÁö¿ä.

ÆÄÀÏÀ» Àá±×´Â ¹æ¹ýÀº ¿©·¯°¡ÁöÀε¥ IPC¸¦ ÀÌ¿ëÇѰÍÀº ³í¿Ü·Î ÇÏ°í ¼³¸íÀ» ÇϰڽÀ´Ï´Ù. º¸Åë flock(2)°ú fcntl(2)À» »ç¿ëÇÕ´Ï´Ù. µÑ´Ù ºñ½ÁÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ flock(2)ÀÇ °æ¿ì NFSµî¿¡´Â Àû¿ëÇÒ ¼ö ¾ø±â ¶§¹®¿¡ fcntlÀ» ÃßõÇÕ´Ï´Ù. fcntl¿¡ ´ëÇÑ ³»¿ëÀº [http]fcntlÀ» ÀÌ¿ëÇÑ ·¹ÄÚµåÀá±ÝÀ» ÂüÁ¶ÇÏ¸é µË´Ï´Ù. ´ÙÀ½Àº flock()¸¦ ÀÌ¿ëÇÑ ÆÄÀÏ Àá±Ý ¿¹Á¦ ÀÔ´Ï´Ù.
#include <sys/types.h> 
#include <sys/stat.h> 
 
int main() 
{ 
    int fd; 
    char *file_name = "lock.file"; 
 
    fd = open(file_name, O_RDONLY); 
    if (flock(fd, LOCK_EX) != 0) 
    { 
        printf("flock error\n"); 
        exit(0); 
    } 
 
    while(1) 
    { 
        printf("OK File FD\n"); 
        sleep(1); 
    } 
    close(fd); 
} 
 
ÄÄÆÄÀÏÈÄ 2°³ÀÇ ÇÁ·Î¼¼½º¸¦ ÀÌ¿ëÇØ¼­ Å×½ºÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

1.13 ¿ÜºÎ ÇÁ·Î±×·¥ÀÇ ½ÇÇà

  • ¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼º Áß¿¡ ÀÖ½À´Ï´Ù. exec¸¦ »ç¿ëÇØ¼­ ¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄ×½À´Ï´Ù. ±×·±µ¥ ½ÇÇà±îÁö´Â ÀߵǾú´Âµ¥ ¿ÜºÎÇÁ·Î±×·¥ÀÌ Á¾·áµÇ¾úÀ» ¶§ ¿ø·¡ ÇÁ·Î±×·¥±îÁö Á¾·áµÇ¾î ¹ö¸®´õ±º¿ä ? ´Ù½Ã ¿ø·¡ ÇÁ·Î±×·¥À¸·Î µÇµ¹¾Æ¿À°Ô ÇØ¾ß µÇ°Åµç¿ä.. ÇØ°á¹æ¹ýÁ» ¾Ë·ÁÁÖ¼¼¿ä.

exec()°è¿­ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄ×À» °æ¿ì »õ·Î¿î ÇÁ·Î¼¼½º°¡ ¼öÇàµÇ´Â°Ô ¾Æ´Õ´Ï´Ù. Áö±Ý ÇöÀçÀÇ ÇÁ·Î¼¼½º¸¦ »õ·Î¿î ÇÁ·Î±×·¥ÀÇ ÇÁ·Î¼¼½º°¡ ±×´ë·Î µ¤¾î ¹ö¸®´Â ¹æ½ÄÀ¸·Î ¼öÇàµË´Ï´Ù. ÇѸ¶µð·Î ±âÁ¸ ÇÁ·Î¼¼½º´Â »ç¶óÁö´Â °ÅÁÒ. ±×·¯´Ï ÇÁ·Î±×·¥ÀÌ Á¾·áÇÏ¸é ±×°É·Î ³¡³ª¹ö¸®´Â °Ì´Ï´Ù. ÀÌ·² °æ¿ì¿¡´Â fork()½ÃŲ ´ÙÀ½ exec¸¦ ½ÃÄÑÁà¾ß ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº [http]ÇÁ·Î¼¼½º °ü°è¸¦ Âü°íÇϼ¼¿ä.

1.14 ¿ÜºÎ ÇÁ·Î±×·¥°úÀÇ ¾ç¹æÇâ Åë½Å

  • À§ÀÇ fork&exec ±â¹ýÀ» ÀÌ¿ëÇØ¼­ ¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇà ½ÃÄ×½À´Ï´Ù. ÀÌµé ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½º°£ÀÇ Åë½ÅÀÌ ÀÌ·ç¾îÁ®¾ß ÇÕ´Ï´Ù. ±×·±µ¥ ÀÌ°É ¾ç¹æÇâÀ¸·Î ÇÏ°í ½Í½À´Ï´Ù. pipe()¸¦ ½áµµ µÇ°ÚÁö¸¸ ±âº»ÀûÀ¸·Î ´Ü¹æÇâÀÌ¶ó¼­ ³Ê¹« º¹ÀâÇÕ´Ï´Ù. ÀÌ¿ÕÀ̸é ÀÚ½Ä ÇÁ·Î¼¼½º(ÇÁ·Î±×·¥)ÀÇ ¼öÁ¤Àº ÃÖ¼ÒÈ­ ÇÏ´Â ÂÊÀ¸·Î °¡°í ½Í°Åµç¿ä..

sockpair(2)À» ÀÌ¿ëÇÏ½Ã¸é µË´Ï´Ù. sockpair()Àº ¿¬°áµÈ ¼ÒÄÏ ½ÖÀ» ¸¸µé¸ç À̰ÍÀ» ÀÌ¿ëÇØ¼­ ¾ç¹æÇâ Åë½ÅÀÌ °¡´ÉÇØ Áý´Ï´Ù.
#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <sys/socket.h> 
#include <sys/types.h> 
 
int main() 
{ 
    int pid; 
    char buf[256]; 
    int fd; 
    int sv[2]; 
    int num = 0; 
 
    socketpair(AF_UNIX, SOCK_STREAM, AF_LOCAL, sv); 
    pid = fork(); 
    if (pid == 0) 
    { 
        dup2(sv[0], 0); 
        execl("./pipe_cl", "pipe_cl", NULL); 
    } 
    else if (pid > 0) 
    { 
        while(1) 
        { 
            write(sv[1], (void *)&num, 4); 
            printf("write %d\n", num); 
            read(sv[1], (void *)&num, 4); 
            printf("read %d\n", num); 
        } 
    } 
} 
 

´ÙÀ½Àº pipe_clÀÇ ÄÚµå ÀÔ´Ï´Ù.
#include <unistd.h> 
#include <stdio.h> 
 
int main() 
{ 
    char buf[256], buf2[256]; 
    int num; 
    while(1) 
    { 
        memset(buf, 0x00, 256); 
        memset(buf2, 0x00, 256); 
        read(0, (void *)&num, 4); 
        num++; 
        write(0, (void *)&num, 4); 
        sleep(1); 
    } 
} 
 

1.15 ÇÁ·Î±×·¥ÀÇ Á¾·á»óÅ ¾Ë¾Æº¸±â

  • À§ÀÇ fork&exec¹æ¹ýÀ¸·Î ¿ÜºÎÇÁ·Î±×·¥À» ¼º°øÀûÀ¸·Î ½ÇÇà½ÃÄ×½À´Ï´Ù. ÇÁ·Î±×·¥ÀÌ Á¾·áµÈ ÈÄ ºÎ¸ðÇÁ·Î¼¼½º´Â Á¾·áµÈ ÀÚ½ÄÇÁ·Î¼¼½ºÀÇ ¸®ÅϰªÀ» È®ÀÎÇØ¼­ ÀÛ¾÷ÀÇ ³»¿ëÀÌ ºÐ±â µÇµµ·ÏÇÏ°í ½Í½À´Ï´Ù. ÀÚ½ÄÇÁ·Î¼¼½ºÀÇ ¸®ÅϰªÀ» ¾Ë¾Æ¿À´Â ¹æ¹ýÀÌ ÀÖ´ÂÁö¿ä.

1.16 ¸ðµâº° ºÐÇÒ ÄÄÆÄÀÏ

  • a.c, b.c, c.c ÀÇ 3°³ÀÇ ÆÄÀÏÀÌ ÀÖ½À´Ï´Ù. a.c¿¡ mainÇÔ¼ö°¡ ÀÖ°í b.c¿Í c.cÀÇ ÇÔ¼ö¸¦ È£ÃâÇØ¼­ »ç¿ëÇÕ´Ï´Ù. À̰͵éÀ» gcc¸¦ ÀÌ¿ëÇØ¼­ ÄÄÆÄÀÏÇØ¼­ 3°³ÀÇ ¿ÀºêÁ§Æ®¸¦ ¸¸µé¾ú´Âµ¥, À̰͵éÀ» ÇÕÃļ­ ½ÇÇàÆÄÀÏ·Î ¸¸µå´Â ¹ýÀ» ¸ð¸£°Ú½À´Ï´Ù.

gccÀÇ -o¿É¼ÇÀ» ÀÌ¿ëÇÏ¸é µË´Ï´Ù.
# gcc -o test a.o b.o c.o 
 
À§¿Í °°ÀÌ Çϸé testÀ̸§ÀÇ ½ÇÇàÆÄÀÏÀÌ ¸¸µé¾îÁý´Ï´Ù.

1.17 ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ ¸®´ª½º ¹èÆ÷ÆÇ ÃßÃµÇØ ÁÖ¼¼¿ä

  • ¿©±â Àú±â ¹èÆ÷ÆÇÀÌ Âü ¸¹Àº°Í °°½À´Ï´Ù. °¢°¢ÀÇ ¹èÆ÷ÆÇÀÌ ¸ðµÎ Ư¡ÀÌ ÀÖ´Â°Í °°Àºµ¥ Ưº°È÷ °³¹ßÀÚ¸¦ À§ÇÑ ÁÁÀº ¹èÆ÷ÆÇÀÖÀ¸¸é Ãßõ ¹Ù¶ø´Ï´Ù.

·¹µåÇÞ ¹èÆ÷ÆÇÀÌ ³Î¸® ¾²À̱â´Â ÇÏÁö¸¸ ÀÌ ¹èÆ÷ÆÇÀº °³¹ßÀÚ¸¦ À§ÇÑ ¹èÆ÷ÆÇÀ̶ó±â º¸´Ù´Â °ü¸®ÀÚ¸¦ À§ÇÑ ¹èÆ÷ÆÇÀ̶ó´Â ¼º°ÝÀÌ Á» °­ÇÕ´Ï´Ù. ½½·¢¿þ¾î´Â ¼³Ä¡/À¯Áö/°ü¸®°¡ ³Ê¹« ¾î·Æ°í ÀÚ·á ±¸Çϱ⵵ ½±Áö ¾Ê±¸¿ä. °³ÀÎÀûÀ¸·Î gentoo¸¦ ÃßõÇÕ´Ï´Ù.

mz_gentoo minzkn´ÔÀÇ gentoo ¼³Ä¡ ¸Þ´º¾ó

1.18 ¸Þ¸ð¸®ÀÇ ÀçÇÒ´ç

  • mallocÀ» ÀÌ¿ëÇØ¼­ µ¿ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¼­ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. ±×·±µ¥ Áß°£¿¡ ÀÌ ÇÒ´çµÈ ¸Þ¸ð¸® °ø°£ÀÌ ºÎÁ·ÇØÁ®¼­ ´Ã·Á¾ß ÇÏ´Â ÀÏÀÌ ¹ß»ýÇß½À´Ï´Ù. ÀÌ¹Ì ¸¸µé¾îÁø ¸Þ¸ð¸® °ø°£À» ´Ã¸± ¼ö ÀÖ´ÂÁö¿ä.

´Ü¼øÈ÷ »ý°¢ÇÏÀÚ¸é malloc¸¦ ÀÌ¿ëÇØ¼­ °ø°£À» »õ·Î Àâ°í ±âÁ¸ÀÇ °ø°£¿¡ ÀÖ´ø µ¥ÀÌÅ͸¦ º¹»çÇÑÈÄ ±âÁ¸ ¸Þ¸ð¸® °ø°£À» ÇØÁ¦(free)ÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ±×·¯³ª ±»ÀÌ Àú·¸°Ô ÇÒÇÊ¿ä´Â ¾ø°í realloc(3)½Ã½ºÅÛ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù.
  1. [http]µ¿Àû ¸Þ¸ð¸®ÇÒ´ç

1.19 ¿¬°áÀ» Á¾·áÇÑ ÈÄ¿¡µµ °è¼Ó ³²¾ÆÀÖ´Â ÇÁ·Î±×·¥À» ¸¸µé°í ½Í½À´Ï´Ù

  • Á¦°¡ ÀÛ¼ºÇÑ ÇÁ·Î±×·¥¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. Ư¼º»ó ¿ø°Ý¿¡ ¿¬°áÇØ¼­ ÀÛµ¿ÇÏ´Â ÇÁ·Î±×·¥Àε¥, ÀÛµ¿Àº ¹®Á¦°¡ ¾ø´Âµ¥ Å͹̳ÎÀÌ ²÷¾îÁö¸é ÇÁ·Î±×·¥µµ ÇÔ²² Á¾·áµÇ¾î ¹ö¸³´Ï´Ù -.-. Å͹̳ÎÀÌ Á¾·áµÇ´õ¶óµµ °è¼Ó ÀÛµ¿ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î¾ß Çϰŵç¿ä.

Å͹̳ÎÀÌ Á¾·áµÇ¸é Å͹̳ο¡¼­ ½ÇÇà½ÃŲ ÇÁ·Î¼¼½ºµµ ¸ðµÎ Á¾·áµË´Ï´Ù. ÀÌÀ¯´Â Å͹̳ΠÁ¾·á½Ã Å͹̳ο¡¼­ ½ÇÇàµÈ ¸ðµç ÀÚ½Ä ÇÁ·Î¼¼½º·Î SIGTERMÀÌ Àü´ÞµÇ´Âµ¥, SIGTERM½Ã±×³Î¿¡ ´ëÇÑ ÇÁ·Î¼¼½ºÀÇ ±âº»ÇൿÀÌ Á¾·áÀ̱⠶§¹®ÀÔ´Ï´Ù. ±×·¯¹Ç·Î SIGTERM½Ã±×³ÎÀ» ¹«½ÃÇϰųª Çڵ鷯¸¦ µî·Ï½ÃŰ´Â µîÀÇ ¹æ¹ýÀ¸·Î Å͹̳ÎÀÌ Á¾·áµÇ´õ¶óµµ ÀÚ½ÄÇÁ·Î¼¼½º´Â °è¼Ó µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù.

±×·¯³ª À§ÀÇ ¹æ¹ýÀº ±×¸® ÁÁÀº ¹æ¹ýÀº ¾Æ´Õ´Ï´Ù. ½Ã±×³ÎÀ» Çڵ帵 ÇÏ´Â °Í º¸´Ù´Â µ¥¸ó(Daemon) ÇÁ·Î±×·¥À» ¸¸µå´Â°Ô ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù.


1.20 µ¥¸ó(Daemon) ÇÁ·Î¼¼½º¶õ°Ô ¹¹ÁÒ?


1.21 Linux¿¡¼­ ¸¸µç ÇÁ·Î±×·¥ÀÇ Unix·ÎÀÇ Æ÷ÆÃ

  • ¸®´ª½º¿¡¼­ ¸¸µé¾îÁø ÇÁ·Î±×·¥À» ¼Ö¶ó¸®½º·Î Æ÷ÆÃÇØ¾ß ÇÒ ÀÏÀÌ »ý°å½À´Ï´Ù. ¸®´ª½º¿¡¼­ ¸¸µç Äڵ尡 ¼Ö¶ó¸®½º¿¡¼­ ¼öÁ¤¾øÀÌ »ç¿ë°¡´ÉÇÑÁö ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é ¾ó¸¶³ª Äڵ尡 ´Þ¶óÁú ¼ö ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.


1.22 link(2)ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ÆÄÀÏÀ» º¹»çÇÏ·Á°í Çϴµ¥ º¹»ç°¡ ¾ÈµË´Ï´Ù.

  • ÆÄÀÏ º¹»ç ÇÁ·Î±×·¥À» ¸¸µé°í ÀÖ½À´Ï´Ù. À̰ÍÀ» °£´ÜÇÏ°Ô ±¸ÇöÇÒ·Á°í link(2)ÇÔ¼ö¸¦ ÀÌ¿ëÇϰí Àִµ¥, ÀÌ»óÇϰԵµ º¹»ç°¡ ¾ÈµÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¾ðÁ¦³ª ¾ÈµÇ´Â°Ô ¾Æ´Ï°í °¡²û ¾ÈµÇ´Â °æ¿ì°¡ ¹ß»ýÇÕ´Ï´Ù. ºÎµð ¹®Á¦¸¦ ÇØ°áÇØ ÁÖ¼¼¿ä.

link(2)ÇÔ¼ö´Â Á¤È®ÇÏ°Ô ¸»ÇÏÀÚ¸é ÆÄÀÏÀ» º¹»çÇÏ´Â ÇÔ¼ö°¡ ¾Æ´Ï¶ó "ÇÏµå ¸µÅ©(hard link)"¸¦ »ý¼ºÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î »ý°¢ÇÏ´Â º¹»çÀÇ °æ¿ì ÆÄÀÏÀÇ inode°¡ ÀüÇô´Ù¸¥ »õ·Î¿î ÆÄÀÏÀÌ ¸¸µé¾îÁö´Â °ÅÁö¸¸ Çϵ帵ũ´Â ¿øº» ÆÄÀÏÀÇ inode¸¦ °¡Áö°í ÆÄÀÏÀ» ¿¬°áÇÏ´Â ¹æ½ÄÀ» »ç¿ëÇÕ´Ï´Ù. ±×·¯¹Ç·Î °°Àº ÆÄƼ¼Ç³»¿¡¼­´Â ¹®Á¦°¡ ¾øÁö¸¸ ´Ù¸¥ ÆÄƼ¼ÇÀ¸·Î Çϵ帵ũ¸¦ °É°íÀÚ ÇÒ¶§ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. ¿Ö³ÄÇϸé inode´Â ÆÄƼ¼Ç(ÀåÄ¡)´ÜÀ§·Î ¸¸µé¾îÁö´Âµ¥ AÆÄƼ¼Ç¿¡¼­ 96¹øÀÌ¿´´Ù°í ÇßÀ» ¶§ B ÆÄƼ¼ÇÀ¸·Î Çϵ帵ũ¸¦ ¸¸µé·Á°í Çϸé ÀÌ¹Ì BÆÄƼ¼Ç¿¡ 96¹ø ¾ÆÀ̳ëµå¸¦ »ç¿ëÇÏ´Â ÆÄÀÏÀÌ ÀÖÀ» ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

ÆÄÀÏÀÏ º¹»çÇϰíÀÚ ÇÑ´Ù¸é link(2)¸¦ »ç¿ëÇÏÁö ¾Ê°í Á÷Á¢ ÆÄÀÏÀÇ ³»¿ëÀ» Àо º¹»çÇÏ´Â »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¸¦ ¸¸µé¾î ½á¾ß ÇÕ´Ï´Ù.
[http]link(2) man ÆäÀÌÁö
[http://www.joinc.co.kr/modules.php?name=News&file=article&sid=17 Unix ÆÄÀÏ ´Ù·ç±â(2)

1.23 ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® »ç¿ë·®, CPUÁ¡À¯À²°ú °°Àº Á¤º¸¸¦ ¾ò¾î¿À°í ½Í½À´Ï´Ù.

  • ÀÌÀü¿¡´Â ps -efµîÀÇ Á¤º¸¸¦ systemÀ̳ª popen()À» ÅëÇØ¼­ ¾ò¾î ¿Ô´Âµ¥, Á»´õ È¿À²ÀûÀÌ°í ¹ü¿ëÀûÀÎ ¹æ¹ýÀ» ã°í½Í½À´Ï´Ù.

À¯´Ð½ºÀÇ /proc ÆÄÀϽýºÅÛÀ» ÀÌ¿ëÇÏ´Â°Ô °¡Àå ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. ÀÌ ÆÄÀÏ ½Ã½ºÅÛ ¹Ø¿¡´Â
¸ðµç ÇÁ·Î¼¼½ºÀÇ ½ÇÇàÁ¤º¸ (¸Þ¸ð¸®, CPUÁ¡À¯À², PID, ½ÇÇà°æ·Î, ½ÇÇàÆÄÀÏ)¸¦ ´ã°í ÀÖ´Â ÆÄÀÏÀÌ ÀÖÀ¸¸ç,
À̰ÍÀ» Àû´çÈ÷ ºÐ¼®Çؼ­ »Ñ·ÁÁֱ⸸ ÇÏ¸é µË´Ï´Ù.

¸®´ª½ºÀÇ °æ¿ì /proc/PID ¹Ø¿¡ ÇÁ·Î¼¼½ºÀÇ Á¤º¸°¡ ±â·ÏµË´Ï´Ù. ¸¸¾à pid°¡ 2345¶ó¸é ÀÌ ÇÁ·Î¼¼½ºÀÇ
Á¤º¸´Â /proc/2345 ¹Ø¿¡ ÀúÀåµË´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº procÀÇ man ÆäÀÌÁö¸¦ Âü°í ÇϽðųª ¾Æ·¡ÀÇ
¹®¼­¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.
[http]ÇÁ·Î¼¼½º Á¤º¸ ¾ò¾î¿À±â
[http]½Ã½ºÅÛ Á¤º¸ ¼öÁý
[http]procÆÄÀÏ ½Ã½ºÅÛÀ» ÀÌ¿ëÇÑ ÇÁ·Î¼¼½º °ü¸®
[http]procÆÄÀÏ ½Ã½ºÅÛÀ» ÀÌ¿ëÇÑ smsÇÁ·Î±×·¥ Á¦ÀÛ

1.24 Å͹̳ÎÀÇ Ã¢Å©±â¸¦ ¾Ë¾Æ¿À´Â ¹æ¹ýÀÌ ¾øÀ»±î¿ä ?

  • Å͹̳Π±â¹ÝÀÇ ÇÁ·Î±×·¥À» ¸¸µé°í ÀÖ½À´Ï´Ù. ±×·±µ¥ X¼­¹ö¿¡¼­ ÇÑÅÒ°ú °°Àº Å͹̳Π¾Ö¹Ä·¹ÀÌÅÍÀÇ Å©±â¸¦ º¯°æÇϸé È­¸éÀÌ ±úÁö´õ±º¿ä. âÀÇ Å©±âº¯È­¸¦ °¨ÁöÇØ¼­ À̰á È­¸é¿¡ Àû¿ë½ÃŰ°í ½ÍÀºµ¥ ¹æ¹ýÀÌ ±Ã±ÝÇÕ´Ï´Ù.

Å͹̳ÎÀÇ Å©±â¸¦ ¾ò¾î¿À´Â ÇÔ¼ö ÀÔ´Ï´Ù.
int MZ_GetTerminalSize(int *s_col, int *s_row) 
{  
 struct winsize s_WinSize = {0, };  
 if(ioctl(fileno(stdout), TIOCGWINSZ, &s_WinSize) == 0)  
 {  
  if(s_col)*s_col = s_WinSize.ws_col;  
  if(s_row)*s_row = s_WinSize.ws_row;  
  return(1);  
 }  
 return(0);  
} 
 

±×·±µ¥ º¸Åë Å͹̳ΠâÀ» º¯°æÇÏ´Â°Ç ºñµ¿±âÀûÀÎ »ç°ÇÀ̹ǷΠ(½ÇÇà Áß°£ Áß°£¿¡ À¯Àú°¡ âÀ» º¯°æ
½Ãų¼ö°¡ ÀÖÁÒ) ÀÌ·¯ÇÑ Ã¢ÀÇ º¯°æÀ» ¾Ë¾Æ³»±â À§Çؼ­´Â ½Ã±×³ÎÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
âÀÌ º¯°æµÉ¶§´Â SIGWINCH½Ã±×³ÎÀÌ ¹ß»ýÇÏ´Ï, ÀÌ ½Ã±×³Î¿¡ ´ëÇÑ Çڵ鷯¸¦ ¼³Ä¡ÇÏ¸é µË´Ï´Ù.
¾Æ·¡ÀÇ ÆäÀÌÁöµéÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.
[http]Å͹̳ΠÁ¦¾î
[http]Å͹̳ÎÀÇ Å©±â ¾Ë¾Æ³»´Â ¹æ¹ý

1.25 ÇÁ·Î±×·¥ÀÌ ¹ÞÀ» ¼ö ÀÖ´Â ÀÎÀÚÀÇ ÃÖ´ë ±æÀÌ´Â

  • ¸Å¿ì ±ä ÀÎÀÚ¸¦ ¹Þ¾Æ¾ß µÇ´Â ÇÁ·Î±×·¥À» ÀÛ¼º ÁßÀÔ´Ï´Ù. ¾Æ¸¶µµ ¹ÞÀ» ¼ö ÀÖ´Â ÀÎÀÚÀÇ ±æÀÌ¿¡ Á¦ÇÑÀÌ ÀÖÀ» °ÍÀ¸·Î »ý°¢µÇ´Âµ¥, Linux½Ã½ºÅÛ¿¡¼­ ¾î´ÀÁ¤µµÀÇ Á¦ÇÑÀ» °¡Áö°í ÀÌ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.

gcc version 2.95.3 Ä¿³Î 2.4.18¿¡¼­ÀÇ Å×½ºÆ® °á°úÀÔ´Ï´Ù.
linux/limits.h ¸¦ º¸¸é ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ ³»¿ëÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
#define ARG_MAX 131072 
 
ȤÀº ´ÙÀ½°ú °°Àº Äڵ带 ÅëÇØ¼­ È®ÀÎÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
#include <stdio.h> 
#include <unistd.h> 
 
int main(int argc, char **argv) 
{ 
    printf("%ld\n", sysconf(_SC_ARG_MAX)); 
    return 0; 
} 
 


1.26 ¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇà½Ã۰í Ãâ·Â°á°ú¸¦ °¡Á®¿À·Á¸é ?

  • Á¦°¡ ¸¸µç ÇÁ·Î±×·¥¿¡¼­ 'ls'µîÀ» ½ÇÇà½Ã۰í È­¸é¿¡ Ãâ·ÂµÇ´Â °ªµéÀ» ¹Þ¾Æ ¿À·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÏ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù. ÀÌ °ªµéÀ» ÀоîµéÀÌ°í ºÐ¼®Çؼ­ ¾î¶² ÀÏÀ» ÇÏ´Â ÇÁ·Î±×·¥À» Â¥°í ½Í½À´Ï´Ù.

fork()½ÃŲÈÄ¿¡ execl¸¦ ÀÌ¿ëÇØ¼­ ¿ÜºÎ ¸í·É¾î¸¦ ½ÇÇà½Ã۰í À̰ÍÀ» pipe·Î ¿¬°áÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ±×·¯³ª À̰ÍÀº º¹ÀâÇÑ ¹æ¹ýÀÌ°í °£´ÜÇÏ°Ô popen()À» »ç¿ëÇÏ¸é µË´Ï´Ù.
#include <stdio.h> 
int main() 
{ 
    FILE *fp = NULL; 
    char buff[256]; 
    if ((fp = popen("ls -al", "r")) == NULL) 
    { 
        perror("popen error "); 
        exit(0); 
    } 
    while(fgets(buff, 255, fp)) 
    { 
        printf("%s", buff); 
    } 
    fclose(fp); 
} 
 

[http]pipeÀÇ »ç¿ë


1.27 ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ »ý¼º½Ãų ¼ö ÀÖ´Â ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ °¹¼ö

  • Ŭ¶óÀÌ¾ðÆ®°¡ Á¢¼ÓÇϸé fork()¸¦ ÅëÇØ¼­ ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃÄѼ­ ¿äûÀ» ó¸®ÇÏ´Â ³×Æ®¿öÅ© ÇÁ·Î±×·¥À» ÀÛ¼ºÇϰí ÀÖ½À´Ï´Ù. ¹®Á¦´Â Ŭ¶óÀÌ¾ðÆ®°¡ »ó´çÈ÷ ¸¹ÀÌ ¿¬°á µÉ ¼öµµ ÀÖ´Ù´Â Á¡ÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î fork()·Î »ý¼º°¡´ÉÇÑ
ÇÁ·Î¼¼½ºÀÇ °¹¼ö´Â ¾ó¸¶³ª µÇ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.

linux½Ã½ºÅÛÀÏ °æ¿ì º¸Åë 1023°³À̸ç ÀÌ °ªÀº getrlimit(2)ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù.
¸Þ´º¾ó ÆäÀÌÁö¸¦ º¸¸é sysconf(2)¸¦ ÅëÇØ¼­µµ °¡Á®¿Ã ¼ö ÀÖ´Â °ÍÀ¸·Î µÇ¾î Àִµ¥, Äڵ带 ¸¸µé¾î¼­
Å×½ºÆ®Çغ» °á°ú °á°ú°¡ ¾à°£ ´Ù¸£°Ô ³ª¿Ô½À´Ï´Ù.
#include <unistd.h> 
#include <stdio.h> 
#include <sys/time.h> 
#include <sys/resource.h> 
#include <unistd.h> 
 
int main() 
{ 
    struct rlimit myrl; 
    printf("%d\n", sysconf(_SC_CHILD_MAX)); 
    getrlimit(RLIMIT_NPROC, &myrl); 
 
    printf("%d\n", myrl.rlim_max); 
} 
 
Å×½ºÆ® ÇØº»°á°ú sysconf´Â 999, getrlimit·Î´Â 1023ÀÌ ³ª¿Ô½À´Ï´Ù.
ulimia -a·Î È®ÀÎÇØº¸¸é 1023À¸·Î ³ª¿À´Â °É·Î ºÁ¼­ getrlimit°¡ Á¤È®ÇÑ °ªÀ» º¸¿©ÁÖ´Â °Í °°½À´Ï´Ù.
µÑ°£ÀÇ Â÷ÀÌÁ¡À» ¾Æ½Ã´Â ºÐÀº ´äº¯ ¹Ù¶ø´Ï´Ù.

1.28 ÇÁ·Î±×·¥ ÀÎÀÚ¸¦ ó¸®ÇÏ´Â ÁÁÀº ¹æ¹ýÀÌ ÀÖ´ÂÁö¿ä

  • -d -f /etc/test.cfg ¿Í °°Àº ÀÎÀÚ¸¦ È¿°úÀûÀ¸·Î ó¸®ÇÏ°í ½Í½À´Ï´Ù. argv·Î ¹Þ¾Æ¼­ ó¸®ÇÏ·Á°í ÇÏ´Ï º¸Åë ¾î·Á¿î°Ô ¾Æ´Õ´Ï´Ù. °ü·Ã ÇÔ¼ö°¡ ÀÖÀ» ¹ýµµ Çѵ¥..

º¸Åë getopt(3)À» ÀÌ¿ëÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇϸé ÇÁ·Î±×·¥ÀÎÀÚ¸¦ ¸Å¿ì °£´ÜÇÏ°Ô Ã³¸® ÇÒ ¼ö ÀÖ½À´Ï´Ù. getopt(3)ÇÔ¼öÀÇ ÃֽŹöÁ¯ÀÎ getopt_long(3)¸¦ »ç¿ëÇÏ´Â °Íµµ ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù.
[http]getopt¸¦ ÀÌ¿ëÇÑ ÀÎÀÚó¸®

1.29 ¸®´ª½º¿¡µµ À©µµ¿ìÁîÀÇ dll °°Àº°Ô ÀÖ³ª¿ä ?

  • À©µµ¿ìÁî´Â ¶óÀ̺귯¸®¸¦ dllÇü½ÄÀ¸·Î ¸¸µé¾î¼­ ÇÊ¿äÇÒ ¶§¸¸ ºÒ·¯¾²´Â Æí¸®ÇÑ ÇÁ·Î±×·¡¹Ö ±â¹ýÀÌ »ç¿ëµÇ°í Àִµ¥ ¸®´ª½º¿¡µµ ±×·¯ÇÑ dll°°Àº °ÍÀÌ ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù. ÀÖ´Ù¸é ¾î¶»°Ô ½á¾ß ÇÏ´ÂÁö¿¡ ´ëÇØ¼­µµ ¾Ë·ÁÁÖ¼¼¿ä.

¹°·Ð ¸®´ª½º(À¯´Ð½º)¿¡µµ dll°ú °°ÀÌ µ¿ÀûÀ¸·Î ¶óÀ̺귯¸®¸¦ ÀûÀç ÇϽô ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. º¸Åë µ¿Àû ¶óÀ̺귯¸® ¶ó°í ºÒ¸®¿ì´Âµ¥, ÇÁ·Î±×·¥ ½ÇÇà µµÁß¿¡ ÇÊ¿äÇÒ ¶§ ÀûÀçÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. dll°ú ¸Å¿ì ºñ½ÁÇÕ´Ï´Ù. µ¿Àû ¶óÀ̺귯¸®¸¦ ¸¸µé°í ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÏ´Â ¹æ¹ýÀº ¾Æ·¡ÀÇ ±â»ç¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.
[http]libraryÀÇ »ç¿ë

1.30 ½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀ̶õ

1.31 ¾î¼Àºí¸®·Î ÀÎÀÚ(argc, argv¶ó°í ºÒ¸®¿ì´Â °Í)¸¦ ¹ÞÀ¸·Á¸é

1.32 ½Ã½ºÅÛ ÄÝÀÌ ¹«¾ùÀÌÁÒ?

  • ÇÁ·Î±×·¡¹Ö °ü·Ã ¹®¼­µéÀ» º¸¸é ÀÌ·¯ÀÌ·¯ ÇѶ§ ÀÌ·¯ÇÑ ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇØ¾ß ÇÑ´Ù¶ó´Â ³»¿ëÀÌ ÀÚÁÖ ´«¿¡ ¶ç´õ±º¿ä. ´Ù¸¥ ÇÁ·Î±×·¡¸Ó¿Í ´ëÈ­ÇÒ ¶§µµ ½Ã½ºÅÛ ÄÝÀ̶õ ¿ë¾î°¡ ÀÚÁÖ »ç¿ëµÇ´õ±º¿ä. write, readµîÀ» ½Ã½ºÅÛÄÝ À̶ó°í ÇÏ´Â°Í °°µçµ¥, À̵éÀº ÇÔ¼ö°¡ ¾Æ´Ï´ø°¡¿ä? ÇÔ¼ö¿Í ½Ã½ºÅÛÄݰ£ÀÇ Â÷ÀÌÁ¡ÀÌ ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.
  • ½Ã½ºÅÛÄÝÀ̶õ Interrupt¶Ç´Â ƯÁ¤ ¸Þ¸ð¸®¸¦ ÅëÇØ¼­ È£ÃâµÇ´Â Ä¿³ÎÀÇ ÇÑ ºÎºÐÀ» ¸»ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î Kernel°ú Application°£ÀÇ ½ÇÇ࿵¿ªÀº Á¢±Ù¼Ó¼ºÀÌ ´Ù¸¨´Ï´Ù. ÇÏÁö¸¸ Ä¿³ÎÀÇ ±â´ÉÀ» »ç¿ëÇÒ¼ö ÀÖ°Ô ÇØ¾ß ÇÒ°ÍÀ̹ǷΠÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î´Â Ä¿³ÎÀÇ Äڵ带 Application¿¡¼­ ¼öÇàÇÒ¼ö ¾ø½À´Ï´Ù. ±×·¡¼­ Call gate, Interrupt gate¶ó´Â ¿ë¾î°¡ Á¸ÀçÇϴµ¥ ÀÏÁ¾ÀÇ Software interrupt¸¦ ¹ß»ýÇϵµ·Ï ÇÏ¿© Ä¿³ÎÀÇ Äڵ带 ¼öÇàÇÏ´Â °ÍÀ» ½Ã½ºÅÛÄÝÀÇ ÀϹÝÀûÀÎ ¸ð½ÀÀ̶ó°í ÇϰڽÀ´Ï´Ù. ±×¸®°í ÇÔ¼ö´Â À̸¦ Çѹø °¨½Î¼­ C¾ð¾î·Î ½±°Ô È£ÃâÇϵµ·Ï ÀÎÀÚ¸¦ ó¸®Çϵµ ¿À·ùÄڵ带 errno¿¡ ÀúÀåÇϴµîÀÇ ¿ªÇÒÀ» ¼öÇàÇÏ°Ô µË´Ï´Ù. ½Ã½ºÅÛÄÝ ÀÚü¸¦ ÇÔ¼öó·³ ²Ù¹Ð¼öµµ ÀÖÀ¸³ª Ä¿³ÎÀÇ ¸Þ¸ð¸® °ø°£ÀÌ ±×´ë·Î µå·¯³ª¹Ç·Î ±×°ÍÀ» °¨Ãß°í Interupt¸¦ ÅëÇØ¼­ È£ÃâÇÏ°Ô µÇ´Â°Ì´Ï´Ù. ¶ÇÇÑ C¿¡¼­´Â Interrupt¸¦ Á÷Á¢ È£ÃâÇÏ´Â ¸í·ÉÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. - minzkn

1.33 ÇöÀçµð·ºÅ丮ÀÇ ÇϺο¡¼­ °°Àº ÆÄÀϸíÀÇ ÆÄÀϵéÀ» ã¾Æº¼¶§


bash# find . -type f -printf "%p %f\n" | sort -k 2 | uniq -D -f 1 | cut -d' ' -f1 
 

1.34 ´Ù¸¥ ÇÔ¼ö·ÎÀÇ goto?

  • º¸Åë ÇÔ¼ö³»¿¡¼­ ´Ù¸¥ ·çƾÀ¸·Î °¡·Á°í ÇÒ¶§ goto¸¦ »ç¿ëÇÏ¸é µÇ´Âµ¥, ´Ù¸¥ ÇÔ¼öÀÇ ·çƾÀ¸·Î´Â goto°¡ µÇÁú ¾Ê´Â±º¿ä ? °¡´ÉÇϱä ÇѰÇÁö¿ä.

longjmp(), setjmp()¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù.
#include <setjmp.h> 
#include <stdio.h> 
 
jmp_buf env; 
 
int jmp(void) 
{ 
    printf("Long Jmp\n"); 
    longjmp(env, 14); 
} 
 
int main() 
{ 
 
    int ret_val; 
    ret_val = setjmp(env); 
    if (ret_val == 0) 
    { 
        printf("after jmp(): %d\n", ret_val); 
        jmp(); 
        printf("back from jmp(): %d\n", ret_val); 
    } 
    else 
    { 
        printf("back from longjmp(): %d\n", ret_val); 
    } 
} 
 

1.35 Á»ºñ ÇÁ·Î¼¼½º ÅðÄ¡Çϱâ

  • fork()¸¦ ÀÌ¿ëÇØ¼­ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÏ°í ¿©·¯°¡Áö ÀÛ¾÷À» ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇϰí ÀÖ½À´Ï´Ù. ±×·±µ¥ ÀÚ²Ù¸¸ Á»ºñ ÇÁ·Î¼¼½º°¡ »ý¼ºµË´Ï´Ù. Á»ºñ ÇÁ·Î¼¼½º°¡ ¿Ö »ý±â´Â °ÇÁö ¾î¶±ÇØ¾ß ¾ø¾Ù ¼ö Àִ°ÇÁö ¾Ë°í ½Í½À´Ï´Ù.

ÇÁ·Î¼¼½ºÀÇ °¢Á¾ Á¤º¸´Â Ä¿³Î¿¡¼­ ¸µÅ©µå ¸®½ºÆ®·Î °ü¸®ÇÏ°Ô µÈ´Ù. À̶§ °ü¸®µÇ´Â ÇÁ·Î¼¼½ºÀÇ Á¤º¸¸¦ º¸¸é ÇÁ·Î¼¼½ºÀÇ Á¾·á »óŵîÀ» ³ªÅ¸³»´Â °ªµéµµ ÀÖ´Ù. ºÎ¸ð ÇÁ·Î¼¼½ºµî¿¡¼­ Á¾·áµÈ ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ »óÅÂ(Á¤»óÀûÀ¸·Î Á¾·áÇß´ÂÁö ¾Æ´ÑÁö)µîÀ» È®ÀÎÇÒ ¼ö ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù.

±×·¸´Ù¸é ÇÁ·Î¼¼½º°¡ Á¾·áÇß´Ù°í ÇØ¼­ Ä¿³Î¿¡¼­ °ü¸®ÇÏ´Â ÀÌ·¯ÇÑ Á¤º¸±îÁö »èÁ¦ÇØ ¹ö¸®¸é ºÎ¸ð ÇÁ·Î¼¼½º´Â ÀÚ½ÄÇÁ·Î¼¼½ºÀÇ Á¾·á »óŸ¦ È®ÀÎÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ±×·¡¼­ ÇÁ·Î¼¼½º°¡ Á¾·áÇϸé ÇÁ·Î¼¼½ºÀÇ ¸ðµç ÀÚ¿øÀº ÇØÁ¦µÇÁö¸¸ Ä¿³ÎÀº ÇÁ·Î¼¼½ºÀÇ µ¥ÀÌÅ͸¦ ±×´ë·Î À¯ÁöÇÑ´Ù. ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾úÁö¸¸ ¿©ÀüÈ÷ Ä¿³Î¿¡ ÀÇÇØ¼­ ÇÁ·Î¼¼½ºÀÇ Á¤º¸°¡ À¯ÁöµÇ´Â »óÅÂÀÇ ÇÁ·Î¼¼½º¸¦ Á»ºñ ÇÁ·Î¼¼½º¶ó°í ÇÑ´Ù.

Á»ºñ ÇÁ·Î¼¼½º¸¦ ¸·´Â °¡Àå ½¬¿î ¹æ¹ýÀº wait(2)ÇÔ¼ö¸¦ È£ÃâÇØ¼­ Á¾·áµÈ ÇÁ·Î¼¼½ºÀÇ Á¾·á »óŸ¦ ¹Þ¾Æ¿À°í Ä¿³Î¿¡¼­ ÇÁ·Î¼¼¼­ Á¤º¸ µ¥ÀÌÅ͸¦ »èÁ¦ÇÏ´Â °ÍÀÌ´Ù. wait(2)¼ö¿Í Á»ºñ ÇÁ·Î¼¼½ºÀÇ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½À» Âü°íÇϱ⠹ٶõ´Ù.

[http://www.joinc.co.kr/modules.php?name=News&file=article&sid=122 Á»ºñÇÁ·Î¼¼½º¿¡ ´ëÇÑ °íÂû

1.36 ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ ±³È¯

  • ºÎ¸ðÇÁ·Î¼¼½º¿Í ÀÚ½ÄÇÁ·Î¼¼½º, ȤÀº ÇÁ·Î¼¼½º¿Í ÇÁ·Î¼¼½º°£ µ¥ÀÌÅ͸¦ ±³È¯ÇØ¾ßµÉ ÀÏÀÌ »ý°å½À´Ï´Ù. ÆÄÀÏÀ» ÀÌ¿ëÇÏ´Â °Ç ³Ê¹« ½Å°æ½á¾ß ÇÒ°Ô ¸¹Àº°Í °°¾Æ¼­¿ä.. ÁÁÀº ¹æ¹ýÀÌ ¾øÀ»·±Áö¿ä.

ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ ±³È¯À» À§Çؼ­´Â IPC¸¦ »ç¿ëÇÕ´Ï´Ù. IPC´Â Inter Procress CommuncationÀÇ ÁÙÀÓ¸»·Î½á ³»ºÎ ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ ±³È¯°ú ÇÁ·Î¼¼½º µ¿±âÈ­¸¦ À§Çؼ­ Á¦°øÇÏ´Â ÇÔ¼öÀÇ ¸ðÀ½ÀÔ´Ï´Ù. BSD½ºÅ¸ÀÏÀÇ IPC¿Í SYSTEM V ½ºÅ¸ÀÏ IPC°¡ ÀÖ½À´Ï´Ù. IPCȰ¿ë¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ URLÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.
[http]System V IPC¿¡ ´ëÇØ¼­
[http]PIPEÀÇ »ç¿ë
[http]FIFOȰ¿ë
[http]¼¼¸¶Æ÷¾îÀÇ »ç¿ë
[http]Unix Domain SocketÀ» ÀÌ¿ëÇÑ IPC
[http]IPC ¼º´É Å×½ºÆ®
[http]Unix Comain Socket (UDP)

1.37 µ¿±â¿Í ºñµ¿±â¿¡ ´ëÇØ¼­

  • ÆÄÀÏ °ü·ÃÀÛ¾÷À» ÇÏ´Ùº¸¸é "µ¿±â", "ºñµ¿±â"¶õ ¾ê±â°¡ ÀÚÁÖ ³ª¿À´Âµ¥ »ó´çÈ÷ Çò°¥¸³´Ï´Ù.

1.38 µ¿½Ã¿¡ ¿©·¯°³ÀÇ ÀÔ/Ãâ·ÂÀ» ´Ù·ç°í ½ÍÀ»¶§

  • FIFO¸¦ ÅëÇØ¼­ À¯´Ð½º µµ¸ÞÀÎ ¿µ¿ª¿¡¼­ ÇÁ·Î¼¼½º°£ Åë½ÅÀ» ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾ú½À´Ï´Ù. ÀÏÁ¾ÀÇ ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨À» µû¸£´Â ÇÁ·Î±×·¥À¸·Î ÇϳªÀÇ ¼­¹ö°¡ ¿©·¯°³ÀÇ Å¬¶óÀÌ¾ðÆ®¿Í Åë½ÅÇϱâ À§Çؼ­ µ¿½Ã¿¡ ¿©·¯°³ÀÇ FIFO·Î ºÎÅÍÀÇ ÀÔ·ÂÀ» ´Ù·ê ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. È¿°úÀûÀÎ ¹æ¹ýÀÌ ÀÖ´ÂÁö¿ä.

1.39 ÇÁ·Î¼¼½º¿Í ½º·¹µåÀÇ Â÷ÀÌ

  • ÇÁ·Î¼¼½º¿Í ½º·¹µåÀÇ Â÷ÀÌÁ¡¿¡ ´ëÇØ¼­ ¼³¸íÇØ ÁÖ¼¼¿ä.

1.40 ¸®´ª½º¿¡¼­ÀÇ ½º·¹µå Áö¿ø

  • ¸®´ª½º¿¡¼­ pthread¸¦ ÀÌ¿ëÇØ¼­ ¾²·¹µå ÇÁ·Î±×·¥À» ÀÛ¼ºÇߴµ¥ ps·Î È®ÀÎÇØ º¸¸é »ý¼º½ÃŲ ½º·¹µåÀÇ °¹¼ö¸¸Å­ÀÇ ÇÁ·Î¼¼½º°¡ »ý¼ºµÇ¾î ÀÖ½À´Ï´Ù. ¾²·¹µå¶ó¸é ´ÜÀÏ ÇÁ·Î¼¼½º¿¡¼­ ¼­·Î´Ù¸¥ ¹®¸Æ»çÀÌÀÇ ±³È¯¸¸ ÀϾ´Â°Í ¾Æ´Ï´ø°¡¿ä ?

1.41 BSD IPC¿Í System V IPC¿ÍÀÇ Â÷ÀÌÁ¡Àº ?

  • IPCÂÊÀ» ÇÏ´Ù º¸´Ï BSD IPC¿Í System V IPC¶ó´Â ¿ë¾î°¡ ³ª¿À´õ±º¿ä. ´Ù °°Àº IPCÀ̱ä Çѵ¥ ¼­·Î À̸§ÀÌ ´Ù¸¥ ÀÌÀ¯°¡ ¹«¾ðÁö ±Ã±ÝÇÕ´Ï´Ù. ¾î¶² ¹öÁ¯ Â÷ÀÌÀΰÇÁö..

¹öÁ¯ÀÇ Â÷À̶ó±â º¸´Ù´Â ¾îµð¿¡¼­ °³¹ßÇß´À³ÄÀÇ Â÷ÀÌ·Î º¸´Â°Ô ¿ÇÀ» µí ÇÕ´Ï´Ù. BSD IPC´Â Berkeley UNIXÀÇ
BSD 4.4¿¡Àú Á¦°øÇÏ´Â IPCÀ̸ç System V IPC´Â AT&T»ç¿¡¼­ °³¹ßÇØ¼­ Á¦°øÇÑ IPCÀÔ´Ï´Ù. BSDº¸´Ù Á»´õ ÃÖ±Ù¿¡ °³¹ßµÈ IPCÀÔ´Ï´Ù. BSD IPC¿¡¼­´Â PIPE, Socketpairs, Unix Domain Socket(UDP/TCP)µîÀ» Á¦°øÇÏ¸ç Æ¯Â¡ÀûÀ¸·Î write, read, sendmsg, recvmsgµîÀÇ ½Ã½ºÅÛ ÇÔ¼öµéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

System V IPC´Â message queues, semaphores, shared memoryµîÀ» Á¦°øÇÏ¸ç µ¥ÀÌÅÍ °øÀ¯¸¦ À§ÇÑ ÀúÀå °ø°£ÀÌ ¿î¿µÃ¼Á¦ Àü¿ª(Ä¿³Î¿¡¼­ °ü¸®)ÀûÀ¸·Î °ü¸®µÈ´Ù´Â Ư¡À» °¡Áö¸ç, read, write´ë½Å msget, msgsnd, msgctl..°ú °°Àº Àü¿ëÀÇ ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÑ´Ù.
[http]Introductory 4.4BSD
[http]System V IPC
[http://www.joinc.co.kr joinc¿¡¼­ IPC·Î °Ë»öÇØº¸±â ¹Ù¶õ´Ù.

1.42 À¯´Ð½º µµ¸ÞÀÎ ¼ÒÄÏÀÌ ¹«¾ùÀÌÁÒ ?

  • ÇÁ·Î¼¼½º°£ ³»ºÎÅë½Å¿¡ À¯´Ð½º µµ¸ÞÀÎ ¼ÒÄÏÀ» ¾²¸é ÆíÇÏ´Ù´Â ¸»À» ÇÏ´õ±º¿ä. ¼ÒÄÏÀº ¿ø°Ý ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ Åë½ÅÀ» À§ÇÑ µµ±¸ ¾Æ´Ï´ø°¡¿ä ?

1.43 ÇöÀç À¯´Ð½º ½Ã½ºÅÛ ½Ã°£ ¾Ë¾Æ¿À´Â ¹æ¹ý

  • À¯´Ð½º ½Ã½ºÅÛÀÇ ÇöÀç ½Ã°£À» ¾Ë¾Æ¿À°í ½Í½À´Ï´Ù.

°¡Àå °£´ÜÇÑ ¹æ¹ýÀº time(2)ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ´Â °Ì´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϸé ÃʷΠȯ»êµÈ À¯´Ð½º ½Ã°£À» ¾ò¾î ¿Ã ¼ö ÀÖ½À´Ï´Ù. À¯´Ð½º ½Ã°£Àº 1970³â 1¿ù 1ÀÏ 00:00ºÎÅÍ Áö±Ý±îÁöÀÇ È帥 ½Ã°£À» ÃʷΠȯ»êÇÑ °Ì´Ï´Ù.
#include <time.h> 
int main() 
{ 
    time_t this_time; 
    this_time = time((time_t *)NULL); 
} 
 
±×·¯³ª time(2)Àº ½Ã°£À» ¾ò¾î¿À´Â ¿À·¡µÈ ¹æ¹ýÀ̸ç ÃÊ´ÜÀ§·Î¸¸ ½Ã°£À» ¾ò¾î ¿Ã ¼ö ÀÖ´Ù´Â ´ÜÁ¡À» °¡Áö°í ÀÖ½À´Ï´Ù. time(2)´ë½Å¿¡ gettimeofday(2)¸¦ »ç¿ëÇÏ´Â°É ±ÇÇÕ´Ï´Ù. gettimeofday(2)¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº [http]ÇÔ¼ö»çÀüÀ» Âü°íÇϼ¼¿ä.

1.44 ÆÄÀÏÀÇ Á¤º¸ ¾ò¾î¿À±â

  • ÆÄÀÏÀÇ À̸§, ±ÇÇÑ, Å©±âµîÀ» ¾ò¾î¿À°í ½Í½À´Ï´Ù.

ÆÄÀϰú °ü·ÃµÈ Á¤º¸´Â stat(2), fstat(2)µîÀÇ ÇÔ¼ö¸¦ ÅëÇØ¼­ ¾ò¾î¿Ã ¼ö ÀÖ½À´Ï´Ù. À̵é ÇÔ¼ö¸¦ »ç¿ëÇϸé stat±¸Á¶Ã¼¿¡ ÇØ´ç ÆÄÀÏÀÇ Á¤º¸¸¦ ä¿ö¼­ µÇµ¹·ÁÁÝ´Ï´Ù. inode, mode, uid, gid, size´Â ¹°·ÐÀÌ°í ÆÄÀÏÀÇ »ý¼º½Ã°£, ¼öÁ¤½Ã°£, º¯°æ½Ã°£ µî¿¡ ´ëÇÑ Á¤º¸µµ ¾ò¾î¿Ã ¼ö ÀÖ½À´Ï´Ù.

[http]stat(2)

1.45 »ç¿ëÀÚ ·Î±×ÀÎ Á¤º¸ ¾ò¾î¿À±â

  • ÅÚ³ÝÀ¸·Î À¯´Ð½º ¼­¹ö¿¡ Á¢±ÙÇϸé ÇöÀç Á¢±ÙÇÑÀ¯Àú·Î ¸¶Áö¸· ¾ðÁ¦ Á¢±ÙÇß´ÂÁö µî¿¡ ´ëÇÑ ·Î±×ÀÎ ±â·ÏÀÌ ³ª¿É´Ï´Ù. ÀÌ·± »ç¿ëÀÚ ·Î±×ÀÎ Á¤º¸¸¦ ¾î¶»°Ô ¾ò¾î¿Ã ¼ö ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.

À¯´Ð½º¿¡¼­´Â »ç¿ëÀÚ Á¤º¸¸¦ utmpÆÄÀÏ¿¡ ±â·ÏÇÕ´Ï´Ù. utmp´Â ÇöÀç ´©°¡ ½Ã½ºÅÛÀ» »ç¿ëÇϰí ÀÖÀ¸¸ç ¾î¶² Å͹̳Î(tty)¸¦ »ç¿ëÇϰí ÀÖ´ÂÁö ¾î¶² IP¿¡¼­ Á¢±ÙÇß´ÂÁö µî¿¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇϰí ÀÖ½À´Ï´Ù.
utmpÁ¤º¸ÀÇ ÃëµæÀ» À§Çؼ­ ¸®´ª½º(À¯´Ð½º Æ÷ÇÔ)´Â getutent(3)¶ó´Â ÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù. getutent(3)¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ ·Î±×ÀÎ Á¤º¸¸¦ utmp±¸Á¶Ã¼(struct utmp)¿¡ ³Ö¾î¼­ µÇµ¹·Á ÁÝ´Ï´Ù. utmp¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ¾Æ·¡ÀÇ »çÀÌÆ®¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù.

[http]utmp¸¦ ÀÌ¿ëÇÑ »ç¿ëÀÚ ·Î±×ÀÎ Á¤º¸ °ü¸®

1.46 select¿Í pollÀÇ Â÷ÀÌÁ¡

  • °³ÀÎÀûÀ¸·Î °øºÎ¸¦ ÇØº»°á°ú select¿Í pollÀº °ÅÀÇ ºñ½ÁÇØ º¸ÀÌ´øµ¥, ¾î¶²Á¡ÀÌ ´Ù¸¥Áö¿ä. ±×¸®°í ÀÔÃâ·Â´ÙÁßÈ­ÀÇ ±¸Çö¿¡ ¾î¶²°ÍÀ» »ç¿ëÇÏ´Â°Ô ´õ ÁÁÀºÁö ±Ã±ÝÇÕ´Ï´Ù.

1.47 °£´ÜÇÑ DB ½Ã½ºÅÛ¿¡ ´ëÇØ¼­

  • ÁÖ¼Ò·Ï, ¸î¸î ÆÄÀÏ Á¤º¸¿Í °°Àº °£´ÜÇÑ Á¤º¸¸¦ ÀúÀåÇÒ ¼ö Àִ ǥÁØÀûÀÎ DB½Ã½ºÅÛÀÌ ÀÖ´ÂÁö¿ä. mysql, pgsql, oracleÀº ³Ê¹« Å©°í º°µµÀÇ ÇÁ·Î±×·¥À» ¼³Ä¡ÇØ¾ß ÇϹǷΠÁ¦¿Ü ½ÃŰ·Æ´Ï´Ù. º°µµÀÇ ÇÁ·Î±×·¥ ¼³Ä¡ÇÊ¿ä¾øÀÌ °£´ÜÇÏ°í ¹ü¿ëÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â DB¸¦ ã°í ÀÖ½À´Ï´Ù.

dbmÀÇ gnu¹öÁ¯ÀÎ gdbmÀ» ÃßõÇÕ´Ï´Ù. dbmÀº °ü°èÇü µ¥ÀÌŸ ±¸Á¶ ¸ðµ¨À» °¡ÁöÁö ¾Ê´Â Ű -> °ªÀÇ °£´ÜÇÑ ±¸Á¶¸¦ °¡Áý´Ï´Ù. ´ç¿¬È÷ °¡º±°í ºü¸£¸ç °ÅÀÇ Ç¥ÁØÀ̹ǷΠº°µµÀÇ ÇÁ·Î±×·¥ ¼³Ä¡¾øÀÌ db½Ã½ºÅÛÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

[http]gdbm¸Þ´º¾ó

1.48 Segmentation fault

  • ÇÁ·Î±×·¡¹Ö Ãʺ¸ÀÔ´Ï´Ù. Äڵ带 Çϳª Â¥¼­ µ¹¸®°í Àִµ¥, Segmentation fault (core dumped)¶ó´Â ¸Þ½ÃÁö°¡ ¶ß¸é¼­ ÇÁ·Î±×·¥ÀÌ Á¾·áÇØ ¹ö¸³´Ï´Ù. ¿Ö ÀÌ·± ¸Þ½ÃÁö°¡ ¶ß´ÂÁö ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ¾î¶±ÇØ¾ß ÇÏ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.

1.49 Oracle DBÇÁ·Î±×·¡¹Ö


1.50 signalÀ» º¸³½ ÇÁ·Î¼¼½ºÀÇ PID°¡Á®¿À±â

  • ÇÁ·Î¼¼½º°¡ ½Ã±×³ÎÀ» ¹Þ¾ÒÀ» ¶§ ¾î¶² ÇÁ·Î¼¼½º·Î ºÎÅÍ ½Ã±×³ÎÀÌ Àü´ÞµÇ¾ú´ÂÁö È®ÀÎÇÒ ¼ö ÀÖÀ»±î¿ä ?

¹°·Ð È®ÀÎ °¡´ÉÇÕ´Ï´Ù. sigactionÀ» ÀÌ¿ëÇÒ°æ¿ì ½Ã±×³Î Ç÷¡±×(sa_flags)¸¦ SA_SIGINFO·Î ¼³Á¤ÇÏ´Â Á¤µµ·Î ½Ã±×³ÎÀ» º¸³½ ÇÁ·Î¼¼½ºÀÇ PID¸¦ ¾ò¾î¿Ã ¼ö ÀÖ½À´Ï´Ù. ¾Æ ½Ã±×³Î Çڵ鷯µµ ¾à°£ ´Þ¶óÁý´Ï´Ù. ÀÎÀÚ·Î siginfo_t *¸¦ ¹Þ¾Æ¿Àµµ·Ï ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. siginfo_t´Â ´ÙÀ½°ú °°½À´Ï´Ù.
siginfo_t  
{ 
    int      si_signo;  /* ½Ã±×³Î ³Ñ¹ö */ 
    int      si_errno;  /* errno °ª */ 
    int      si_code;   /* ½Ã±×³Î ÄÚµå */ 
    pid_t    si_pid;    /* ÇÁ·Î¼¼½º ID º¸³»±â */ 
    uid_t    si_uid;    /* ÇÁ·Î¼¼½º¸¦ Àü¼ÛÇÏ´Â ½ÇÁ¦ »ç¿ëÀÚ ID */ 
    int      si_status; /* Exit °ª ¶Ç´Â ½Ã±×³Î */ 
    clock_t  si_utime;  /* ¼Ò¸ðµÈ »ç¿ëÀÚ ½Ã°£ */ 
    clock_t  si_stime;  /* ¼Ò¸ðµÈ ½Ã½ºÅÛ ½Ã°£ */ 
    sigval_t si_value;  /* ½Ã±×³Î °ª */ 
    int      si_int;    /* POSIX.1b ½Ã±×³Î */ 
    void *   si_ptr;    /* POSIX.1b ½Ã±×³Î */ 
    void *   si_addr;   /* ½ÇÆÐ¸¦ ÃÊ·¡ÇÑ ¸Þ¸ð¸® À§Ä¡ */ 
    int      si_band;   /* ¹êµå À̺¥Æ® */ 
    int      si_fd;     /* ÆÄÀÏ ±â¼úÀÚ */ 
} 
 
´ÙÀ½Àº °£´ÜÇÑ Å×½ºÆ® ÄÚµåÀÔ´Ï´Ù.
#include <signal.h> 
#include <stdio.h> 
#include <string.h> 
#include <unistd.h> 
 
void sig_int(int signo, siginfo_t *siginfo) 
{ 
    printf("%d : %d\n", getpid(), siginfo->si_pid); 
} 
 
int main() 
{ 
    struct sigaction intsig; 
    intsig.sa_sigaction = sig_int; 
 
    sigemptyset(&intsig.sa_mask); 
    intsig.sa_flags = SA_SIGINFO; 
 
    if (sigaction(SIGINT, &intsig, 0) == -1) 
    { 
        perror("signal error : "); 
        return 1; 
    } 
    while(1) 
    { 
        sleep(1); 
    } 
} 
 

1.51 µ¿±â ÀÔÃâ·Â°ú ºñµ¿±â ÀÔÃâ·ÂÀÇ Â÷ÀÌ

  • ÆÄÀÏÀÔÃâ·ÂÀ» ´Ù·ç´Ù º¸´Ï µ¿±â/ºñµ¿±â ¶ó´Â ¸»ÀÌ ÀÚÁÖ µîÀåÇÕ´Ï´Ù. À̵ÑÀÇ Â÷ÀÌÁ¡ÀÌ ±Ã±ÝÇÕ´Ï´Ù.

1.52 ½Ã±×³Î(signal)ÀÌ ¹«¾ùÀΰ¡¿ä ?

  • ÀÌÁ¦ ¸· ¸®´ª½º ÇÁ·Î±×·¡¹Ö¿¡ ÀÔ¹®ÇÑ Ãʺ¸ÀÔ´Ï´Ù. ½Ã±×³ÎÀ» »ç¿ëÇÏ¸é µÈ´Ù¶ó´Â ¸»ÀÌ ¸¹ÀÌ ³ª¿À´õ±º¿ä. ÀÌ·²¶© ÀÌ·± ½Ã±×³ÎÀÌ Àü´ÞµÈ´Ù.. Àú·²¶© Àú·± ½Ã±×³ÎÀÌ Àü´ÞµÈ´Ù. ±×·±µ¥ ¾Æ¹«·¡µµ ½Ã±×³ÎÀÌ Á¤È®È÷ ¹«¾ðÁö ¾ÆÁ÷ ¸ð¸£°Ú½À´Ï´Ù.

[http]½Ã±×³Î ´Ù·ç±âÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.

1.53 ½Ã±×³ÎÀ» ÀÒ¾î¹ö¸®´Â °Í °°½À´Ï´Ù.?

  • ½Ã±×³ÎÀÌ Àü´ÞµÇ¾î¼­ ½Ã±×³Î Çڵ鷯°¡ 󸮵ǰí Àִµ¥, µ¿ÀÏÇÑ ½Ã±×³ÎÀÌ ¶Ç Àü´ÞµÇ¸é ºí·°µÈ´Ù°í ¾Ë°í ÀÖ½À´Ï´Ù. ±×·±µ¥ ¿©±â¿¡ ½Ã±×³ÎÀÌ ´Ù½Ã Àü´ÞµÇ¸é ÀÌÀü ½Ã±×³ÎÀº »ç¶óÁ® ¹ö¸®´õ±º¿ä. ÀÌ·¸°Ô ½Ã±×³ÎÀ» ÀÒ¾î¹ö¸®¸é ÇÁ·Î±×·¥ÀÌ Á» ÀÌ»óÇØÁú°Í °°Àºµ¥, ¿©·¯°³ÀÇ ½Ã±×³ÎÀÌ Àü´ÞµÇ´õ¶óµµ ÀÒ¾î¹ö¸®Áö ¾Ê°í »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´ÂÁö¿ä.

½Ã±×³ÎÀº ´ë±â¿­À» °¡ÁöÁö ¾Ê½À´Ï´Ù. ½Ã±×³Î Çڵ鷯°¡ Á¾·áµÇÁö ¾ÊÀº »óÅ¿¡¼­ ´Ù¸¥ ½Ã±×³ÎÀÌ µé¾î¿Â´Ù¸é ÀÌ ½Ã±×³ÎÀº ºí·°µÇ°í(signal°ü·Ã ÇÔ¼ö·Î ºí·°½Ãų ¼ö ÀÖ´Ù) Çڵ鷯 Á¾·áÈÄ ºí·°µÈ ½Ã±×³Î¿¡ ´ëÇÑ Çڵ鷯¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ½Ã±×³ÎÀÌ ºí·°µÇ¾î ÀÖ´Â »óÅ¿¡¼­ ¶Ç´Ù½Ã ½Ã±×³ÎÀÌ µé¾î¿Â´Ù¸é ½Ã±×³ÎÀ» ¹ö·ÁÁö°Ô µË´Ï´Ù.

ÇØ°á¹æ¹ýÀº ½Ã±×³ÎÀÇ ´ë±â¿­À» À¯ÁöÇÏ´Â ¹æ¹ýÀ¸·Î RTS(RealTime Signal)À» »ç¿ëÇÏ¸é µË´Ï´Ù.

1.54 ÆÄÀÏ º¯°æ °Ë»ç

  • ÆÄÀÏÀÇ ¸ñ·ÏÀ» ¸¸µé°í ÀÌ ÆÄÀÏ¿¡ ´ëÇÑ ¾î¶² º¯°æÀÌ ÀÖ´ÂÁö È®ÀÎÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé°í ½Í½À´Ï´Ù. ¾î¶² ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÒ·±Áö¿ä.

°£´ÜÇÏ°Ô stat(2)°è¿­ÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ÆÄÀÏÀÇ »çÀÌÁî¿Í º¯°æ³¯Â¥µîÀ» ÁÖ±âÀûÀ¸·Î °Ë»çÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ·¯ÇÑ °ªµéÀº ½±°Ô ÀÓÀÇ·Î º¯°æÇÒ ¼ö Àֱ⠶§¹®¿¡ Áß¿äÆÄÀÏÀÇ °Ë»ç¸¦ À§Çؼ­´Â ºÎÀûÀýÇÑ ¸éÀÌ ÀÖ½À´Ï´Ù. ÀÌ·² ¶§´Â ÆÄÀÏÀÇ Hash°ªÀ» ¾ò¾î³»¾î¼­ ºñ±³ÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. Hash´Â MD5(12)¸¦ »ç¿ëÇÏ¸é ¹«³­ÇÕ´Ï´Ù.

[http]MD5¸¦ ÀÌ¿ëÇÑ ÆÄÀϺ¯Á¶ °Ë»ç

1.55 ½Ã½ºÅÛÇÁ·Î±×·¡¹ÖÀ» Çϴµ¥ assembly¾îµµ °øºÎÇØ¾ß Çϳª¿ä?


1.56 °£´ÜÇÑ ¿î¿µÃ¼Á¦ Á¤º¸¸¦ ¾ò¾î¿À°í ½Í½À´Ï´Ù

  • uname¸í·ÉÀ» ÀÌ¿ëÇϸé Ä¿³Î¹öÁ¯°ú ¼³Ä¡³¯Â¥¿Í °£´ÜÇÑ CPUÁ¤º¸µîÀ» ¾ò¾î¿Ã ¼ö Àִµ¥, C¸¦ ÅëÇØ¼­ ±¸ÇöÇÏ°í ½Í½À´Ï´Ù.

uname(2)À̶ó´Â ½Ã½ºÅÛÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ¾ò¾î¿Ã ¼ö ÀÖ½À´Ï´Ù. ¾ò¾î¿À´Â Á¤º¸´Â ¾Æ·¡¿Í °°½À´Ï´Ù.
struct utsname { 
    char sysname[SYS_NMLN];   // ¿î¿µÃ¼Á¦ À̸§ 
    char nodename[SYS_NMLN];  // È£½ºÆ®À̸§ 
    char release[SYS_NMLN];   // ¹öÁ¯  
    char version[SYS_NMLN];   // ÆÐÄ¡¹öÁ¯ 
    char machine[SYS_NMLN];   // ½Ã½ºÅÛ Á¾·ù  
#ifdef _GNU_SOURCE 
    char domainname[SYS_NMLN]; 
#endif 
 

´ÙÀ½ÀÇ ¿¹Á¦¸¦ Âü°íÇÏ½Ã¸é ½±°Ô ÀÌÇØÇÏ½Ç ¼ö ÀÖÀ»°Ì´Ï´Ù.
[http]uname(2)

1.57 Á¤Àû ¶óÀ̺귯¸®¿Í µ¿Àû¶óÀ̺귯¸®ÀÇ Â÷ÀÌÁ¡

  • ¶óÀ̺귯¸® Á¾·ùµµ ¿©·¯°¡Áö ±º¿ä. Á¤Àû¶óÀ̺귯¸®¿Í µ¿Àû¶óÀ̺귯¸®¶ó´Â°Ô ³ª¿À´øµ¥ µÑÀÇ Â÷ÀÌÁ¡¿¡ ´ëÇØ¼­ ¾Ë°í ½Í½À´Ï´Ù. °¡´ÉÇÏ¸é ¸¸µå´Â ¹ýµµ ¾Ë·ÁÁÖ¼¼¿ä.

¶óÀ̺귯¸® ¸¸µé±â¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.

1.58 ¶óÀ̺귯¸® ¾ÆÄ«À̺ê(archive) ¸¸µé±â

  • °£´ÜÇÏ°Ô ¿ÀºêÁ§Æ®¸¦ ¸¸µé¾î¼­ ÇÊ¿äÇÑ ÇÁ·Î±×·¥¿¡ ±×¶§ ±×¶§ ¸µÅ© ½ÃÄѼ­ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. ±×·±µ¥ ¿ÀºêÁ§Æ®°¡ ¸¹¾ÆÁö´Ï±î.. À̰аü¸®Çϱ⵵ Àå³­¾Æ´Ï³×¿ä.. Æí¸®ÇÏ°Ô °ü¸®ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾øÀ»±î¿ä ?

arÀ̶ó´Â ÇÁ·Î±×·¥À» »ç¿ëÇÏ¸é µË´Ï´Ù. ¿ÀºêÁ§Æ®µéÀ» ÇϳªÀÇ ¾ÆÄ«À̺ê·Î ¸¸µé¾î¼­ °ü¸®ÇÒ ¼ö ÀÖµµ·Ï µµ¿Í ÁÝ´Ï´Ù. ¿¹¸¦ µé¾î 1.o, 2.o, 3.o ¶ó´Â 3°³ÀÇ ¿ÀºêÁ§Æ®°¡ ÀÖ´Ù¸é ¾Æ·¡¿Í °°Àº ¹æ¹ýÀ¸·Î ÇϳªÀÇ ¾ÆÄ«ÀÌºê ÆÄÀÏ·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
# ar cru libmy.a 1.o 2.o 3.o 
 
´ÙÀ½Àº ÀÚÁÖ »ç¿ëÇÏ´Â ±âº» ¿É¼Çµé ÀÔ´Ï´Ù.
¿É¼Ç ¼³¸í
c ¾ÆÄ«ÀÌºê ÆÄÀÏÀÌ ¾øÀ¸¸é »ý¼º
r ¿ÀºêÁ§Æ®¸¦ ¾ÆÄ«À̺꿡 Ãß°¡
u µ¿ÀÏÇÑ ¿ÀºêÁ§Æ®°¡ ÀÖ´Ù¸é ¾÷µ¥ÀÌÆ®
t ¾ÆÄ«À̺꿡 Æ÷ÇÔµÈ ¿ÀºêÁ§Æ® ¸ñ·Ï

1.59 µ¿Àû ¶óÀ̺귯¸® ¸¸µå´Â ¹ý

  • ÇÁ·Î±×·¥ ½ÇÇà µµÁß¿¡ ºÒ·¯¿Ã ¼ö ÀÖ´Â µ¿Àû ¶óÀ̺귯¸®¸¦ ¸¸µé°í ½Í½À´Ï´Ù. ¾î¶»°Ô ÇØ¾ß ÇÏ´ÂÁö¿ä.

1.60 beep(ºñÇÁ)À½ ¿ï¸®°Ô Çϱâ

  • ÇÁ·Î±×·¥½ÇÇàÁß ¾î¶² À̺¥Æ®°¡ ¹ß»ýÇϸé ÁÖÀǸ¦ ȯ±â½ÃŰ´Â ºñÇÁÀ½ÀÌ ¿ï¸®µµ·Ï ÇÏ°í ½Í½À´Ï´Ù.

°¡Àå °£´ÜÇÑ ¹æ¹ýÀº printf("\a")¸¦ ÀÌ¿ëÇÑ ¹æ¹ýÀÔ´Ï´Ù. ȤÀº ncursesÀÇ beep()ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.
#include <ncurses.h> 
 
int main() 
{ 
    initscr(); 
    beep(); 
    endwin(); 
} 
 

1.61 ȯ°æº¯¼ö¿¡ ´ëÇØ¼­

  • ȯ°æº¯¼ö¶ó´Â°Ô ¹«¾ùÀÎÁö ¾î¶³ ¶§ »ç¿ëµÇ´Â °ÍÀÎÁö ¾Ë°í ½Í½À´Ï´Ù.

1.62 C Äڵ忡¼­ Àüü ȯ°æº¯¼ö ¾ò¾î¿À±â

  • getenv()µîÀ» ÅëÇØ¼­ ȯ°æº¯¼ö¸¦ ¾ò¾î¿À´Â°Ç ¾Ë°Ú´Âµ¥, Àüü ȯ°æº¯¼ö¸¦ ¾ò¾î¿À´Â°Ç À߸𸣰ڽÀ´Ï´Ù. getenv()¸¦ »ç¿ëÇÏ·Á¸é ¹Ýµå½Ã ȯ°æº¯¼öÀÇ À̸§À» ¾Ë¾Æ¾ß Çϴµ¥, ±×·²¼öµµ ¾øÀ»°Í °°±¸¿ä.

main()ÇÔ¼öÀÇ 3¹øÂ° ÀÎÀڷΠȯ°æº¯¼öÀÇ Æ÷ÀÎÅ͸¦ ¾ò¾î¿Ã ¼ö ÀÖ½À´Ï´Ù.
int main(int argc, char ** argv, char **env) 
{ 
    while(*env) 
    { 
        printf("%s\n", *env); 
        *env++; 
    } 
} 
 

2 ÃÖ±Ù º¯µ¿ »çÇ×

  1. ¶óÀ̺귯¸® ¾ÆÄ«À̺ê(archive) ¸¸µé±â 03/12/02 - yundream
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.