|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
JOINC FAQ
yundream_at_joinc.co.kr
¹Ýº¹ÀûÀ¸·Î ÀÚÁÖ ¿Ã¶ó¿À´Â Áú¹®µé¿¡ ´ëÇÑ FAQ¸¦ ÀÛ¼ºÇÏ·Á ÇÕ´Ï´Ù. Q&A°Ô½ÃÆÇ°ú joincÀÇ ±â»çµéÀ»
Â÷°í·ÎÇØ¼ ¸¸µé¾î ³ª°¥ »ý°¢ÀÔ´Ï´Ù. ¸¹ÀÌ Âü¿©ÇØ ÁÖ¼¼¿ä..
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.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¿Í Á¶°Ç º¯¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. ¼¼¸¶Æ÷¾î¸¦ »ç¿ëÇÒ ¼öµµ ÀÖÁö¸¸ ³í¿Ü·Î ÇϰڽÀ´Ï´Ù. ´ÙÀ½ ³»¿ëµéÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.
- http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_pthread_mutex_Á¶°Çº¯¼ö
- http://www.joinc.co.kr/modules/moniwiki/wiki.php/pthread_API
- http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_pthread%202
1.7 ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á°ª ¾Ë¾Æ¿À±â
- fork()·Î ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÑÈÄ ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á°ªÀ» ¾Ë°íÀÚ ÇÕ´Ï´Ù. ½©¿¡¼´Â echo $?·Î Çϸé Á¾Àü ½ÇÇàÇÑ ÇÁ·Î¼¼½ºÀÇ Á¾·á°ªÀ» ¾Ë ¼ö Àִµ¥, ÇÁ·Î±×·¥ »ó¿¡¼ °¡´ÉÇÑÁö¿ä.
wait(2)¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. wait()´Â ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á¸¦ ±â´Ù¸®´Â ÇÔ¼ö·Î ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á°ªÀ» °¡Á®¿É´Ï´Ù.
- Zombie¿¡ ´ëÇÑ °íÂû
- 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);
- http://www.joinc.co.kr/modules.php?name=News&file=article&sid=80
1.9 ÀÔ·Â ¹®ÀÚ¿ÀÌ È¸é¿¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï
- ¸¸µå´Â ÇÁ·Î±×·¥¿¡¼ ÀÎÁõÀ» À§Çؼ ¾ÆÀ̵ð¿Í ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇÏ´Â ºÎºÐÀÌ ÀÖ½À´Ï´Ù. ¹®Á¦´Â ÆÐ½º¿öµå°¡ ȸ鿡 ±×´ë·Î Ãâ·ÂµÈ´Ù´Â °Çµ¥, ÀÌ°É Ãâ·ÂµÇÁö ¾Êµµ·Ï Çϰųª *°ú °°Àº ¹®ÀÚ¿·Î ´ëÄ¡µÇ¾î¼ ³ª¿Àµµ·Ï ÇÒ ¼ö ¾ø´Â °ÇÁö¿ä.
Å͹̳ÎÀ» ÀÔ·ÂÀ» ¹ÝÇâ(echo)ÇÏÁö ¾Êµµ·Ï º¯°æÇÏ¸é µË´Ï´Ù. termios¿¡¼ Á¦°øÇÏ´Â tcgetattr(3), tcsetattr(3)ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù.
- Code_C_inputpass
-
Å͹̳ΠÁ¦¾î
1.10 ¸®´ª½º ÄܼÖÀÇ È¸éº¸È£±â ²ô°Å³ª ¼³Á¤Çϱâ
- ¸®´ª½º Äֿܼ¡¼ ÀÔ·ÂÀÌ ÀüÇô ¾øÀ»¶§ ƯÁ¤ ½Ã°£¸¸ È帣¸é ȸéÀÌ °ËÀº»öÀÌ µË´Ï´Ù. ¹°·Ð ´Ù½Ã Űº¸µå ÀÔ·ÂÀ» ÇÏ¸é µ¹¾Æ¿ÀÁö¸¸ ÀÌ ¼³Á¤À» ²ô°Å³ª ½Ã°£À» ¼³Á¤ÇÏ°í ½Í½À´Ï´Ù. ÀÌ·²¶© ¾îÂî ÇÏ¿À¸®±î?
- ¿ì¼± ƯÁ¤ ½Ã°£ÀÌ Áö³ªµµ ȸéÀÌ Blank »óŰ¡ µÇÁö ¾Êµµ·Ï ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ¸í·ÉÀ» ÀÔ·ÂÇÕ´Ï´Ù.
bash# setterm -blank 0
- ƯÁ¤½Ã°£ÀÌ µÇ¸é Blank°¡ µÇµµ·Ï ÇÏ·Á¸é ºÐ´ÜÀ§·Î 1 ~ 60ºÐ±îÁö ÁöÁ¤°¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¾î 10ºÐµ¿¾È ÀÔ·ÂÀÌ ¾øÀ»¶§ Blank»óÅ·ΠÁøÀÔÇϵµ·Ï ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ¸í·ÉÀ» ÀÔ·ÂÇÕ´Ï´Ù.
bash# setterm -blank 10
- Áï, setterm ¸í·ÉÀ» ÀÌ¿ëÇÏ¸é ¿©·¯°¡Áö ÄֻܼóÀÇ ¼³Á¤À» º¯°æÇÒ¼ö ÀÖÀ¸¸ç blank±â´ÉÀº -blank¿É¼ÇÀ» »ç¿ëÇÏ¿© ¼³Á¤°¡´ÉÇÕ´Ï´Ù. ¿©±â¼ 0Àº off¸¦ ÀǹÌÇϸç 1 ~ 60±îÁöÀÇ ¼ýÀÚ´Â ºÐÀ» ÀǹÌÇÕ´Ï´Ù. ±× ÀÌ»óÀÇ °ªÀº Á¤ÀǵÇÁö ¾Ê°Å³ª ÇØ´ç ¸Þ´º¾óÀ» µû·Î ÂüÁ¶Çϼ¼¿ä.
1.11 ¹®ÀÚ¿ ¾ÏÈ£È Çϱâ
- ¾ÆÀ̵ð/ÆÐ½º¿öµå ¹æ½ÄÀÇ ÀÎÁõÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù. À̵é Á¤µµ´Â ÆÄÀÏ¿¡ ÀúÀåµÇ°í ÀÎÁõ ¿äûÀÌ µé¾î¿À¸é ºñ±³ÇÏ´Â ¹æ½ÄÀ» »ç¿ëÇϴµ¥, ÆÄÀÏ¿¡ ÀúÀåµÇ´Â ÆÐ½º¿öµå¸¦ ¾ÏÈ£È ÇØ¼ ÀúÀåÇØ¾ß ÇÒ°Í °°½À´Ï´Ù. Àû´çÇÑ ¹æ¹ý ºÎʵ右´Ï´Ù.
crypt(3)ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. DES ´Ü¹æÇâ ÇØ½¬¾Ë°í¸®ÁòÀ» »ç¿ëÇØ¼ º¹È£È°¡ ºÒ°¡´É Çϵµ·Ï ¾Ïȣȵ˴ϴÙ. ÀÌ·± Ư¼ºÀ¸·Î ÆÐ½º¿öµå ¾Ïȣȵ À¯¿ëÇÏ°Ô »ç¿ëµË´Ï´Ù.
- cryptÀÇ »ç¿ë
1.12 ÆÄÀÏ Àá±×±â
- ÆÄÀÏ¿¡ ·Î±×¸¦ ³²±â´Â ¼¹ö ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ¼¹ö ÇÁ·Î±×·¥Àº fork()·Î ¸¸µé¾îÁ® ÀÖ°í fork()µÈ ÀÚ½ÄÇÁ·Î¼¼½ºµéÀÌ µ¿ÀÏÇÑ ÆÄÀÏ¿¡ ³»¿ëÀ» ¾¹´Ï´Ù. ±×·±µ¥ ÀÌ·¸°Ô ¸î¹ø µ¹´Ù º¸´Ï ÆÄÀÏÀÇ ³»¿ëÀÌ ¼·Î ²¿¿© ¹ö¸®´õ±º¿ä.. ¾Æ¸¶ ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ ÆÄÀÏÀ» ¾²°í ÀÖ´Â Áß¿¡ ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ½á¼ ±×·±°Í °°Àºµ¥ Çѹø¿¡ ÇϳªÀÇ ÇÁ·Î¼¼½º¸¸ ÆÄÀÏ¿¡ Á¢±ÙÇϵµ·Ï ÇÒ ¼ö ¾ø´ÂÁö¿ä.
ÆÄÀÏÀ» Àá±×´Â ¹æ¹ýÀº ¿©·¯°¡ÁöÀε¥ IPC¸¦ ÀÌ¿ëÇѰÍÀº ³í¿Ü·Î ÇÏ°í ¼³¸íÀ» ÇϰڽÀ´Ï´Ù. º¸Åë flock(2)°ú fcntl(2)À» »ç¿ëÇÕ´Ï´Ù. µÑ´Ù ºñ½ÁÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ flock(2)ÀÇ °æ¿ì NFSµî¿¡´Â Àû¿ëÇÒ ¼ö ¾ø±â ¶§¹®¿¡ fcntlÀ» ÃßõÇÕ´Ï´Ù. fcntl¿¡ ´ëÇÑ ³»¿ëÀº 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¸¦ ½ÃÄÑÁà¾ß ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ÇÁ·Î¼¼½º °ü°è¸¦ Âü°íÇϼ¼¿ä.
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¸¦ ÃßõÇÕ´Ï´Ù.
1.18 ¸Þ¸ð¸®ÀÇ ÀçÇÒ´ç
- mallocÀ» ÀÌ¿ëÇØ¼ µ¿ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¼ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. ±×·±µ¥ Áß°£¿¡ ÀÌ ÇÒ´çµÈ ¸Þ¸ð¸® °ø°£ÀÌ ºÎÁ·ÇØÁ®¼ ´Ã·Á¾ß ÇÏ´Â ÀÏÀÌ ¹ß»ýÇß½À´Ï´Ù. ÀÌ¹Ì ¸¸µé¾îÁø ¸Þ¸ð¸® °ø°£À» ´Ã¸± ¼ö ÀÖ´ÂÁö¿ä.
´Ü¼øÈ÷ »ý°¢ÇÏÀÚ¸é malloc¸¦ ÀÌ¿ëÇØ¼ °ø°£À» »õ·Î Àâ°í ±âÁ¸ÀÇ °ø°£¿¡ ÀÖ´ø µ¥ÀÌÅ͸¦ º¹»çÇÑÈÄ ±âÁ¸ ¸Þ¸ð¸® °ø°£À» ÇØÁ¦(free)ÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ±×·¯³ª ±»ÀÌ Àú·¸°Ô ÇÒÇÊ¿ä´Â ¾ø°í realloc(3)½Ã½ºÅÛ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù.
-
µ¿Àû ¸Þ¸ð¸®ÇÒ´ç
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)¸¦ »ç¿ëÇÏÁö ¾Ê°í Á÷Á¢ ÆÄÀÏÀÇ ³»¿ëÀ» ÀÐ¾î¼ º¹»çÇÏ´Â »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¸¦ ¸¸µé¾î ½á¾ß ÇÕ´Ï´Ù.
1.23 ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® »ç¿ë·®, CPUÁ¡À¯À²°ú °°Àº Á¤º¸¸¦ ¾ò¾î¿À°í ½Í½À´Ï´Ù.
- ÀÌÀü¿¡´Â ps -efµîÀÇ Á¤º¸¸¦ systemÀ̳ª popen()À» ÅëÇØ¼ ¾ò¾î ¿Ô´Âµ¥, Á»´õ È¿À²ÀûÀÌ°í ¹ü¿ëÀûÀÎ ¹æ¹ýÀ» ã°í½Í½À´Ï´Ù.
À¯´Ð½ºÀÇ /proc ÆÄÀϽýºÅÛÀ» ÀÌ¿ëÇÏ´Â°Ô °¡Àå ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. ÀÌ ÆÄÀÏ ½Ã½ºÅÛ ¹Ø¿¡´Â
¸ðµç ÇÁ·Î¼¼½ºÀÇ ½ÇÇàÁ¤º¸ (¸Þ¸ð¸®, CPUÁ¡À¯À², PID, ½ÇÇà°æ·Î, ½ÇÇàÆÄÀÏ)¸¦ ´ã°í ÀÖ´Â ÆÄÀÏÀÌ ÀÖÀ¸¸ç,
À̰ÍÀ» Àû´çÈ÷ ºÐ¼®Çؼ »Ñ·ÁÁֱ⸸ ÇÏ¸é µË´Ï´Ù.
¸®´ª½ºÀÇ °æ¿ì /proc/PID ¹Ø¿¡ ÇÁ·Î¼¼½ºÀÇ Á¤º¸°¡ ±â·ÏµË´Ï´Ù. ¸¸¾à pid°¡ 2345¶ó¸é ÀÌ ÇÁ·Î¼¼½ºÀÇ
Á¤º¸´Â /proc/2345 ¹Ø¿¡ ÀúÀåµË´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº procÀÇ man ÆäÀÌÁö¸¦ Âü°í ÇϽðųª ¾Æ·¡ÀÇ
¹®¼¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.
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½Ã±×³ÎÀÌ ¹ß»ýÇÏ´Ï, ÀÌ ½Ã±×³Î¿¡ ´ëÇÑ Çڵ鷯¸¦ ¼³Ä¡ÇÏ¸é µË´Ï´Ù.
¾Æ·¡ÀÇ ÆäÀÌÁöµéÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.
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);
}
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)¸¦ »ç¿ëÇÏ´Â °Íµµ ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù.
1.29 ¸®´ª½º¿¡µµ À©µµ¿ìÁîÀÇ dll °°Àº°Ô ÀÖ³ª¿ä ?
- À©µµ¿ìÁî´Â ¶óÀ̺귯¸®¸¦ dllÇü½ÄÀ¸·Î ¸¸µé¾î¼ ÇÊ¿äÇÒ ¶§¸¸ ºÒ·¯¾²´Â Æí¸®ÇÑ ÇÁ·Î±×·¡¹Ö ±â¹ýÀÌ »ç¿ëµÇ°í Àִµ¥ ¸®´ª½º¿¡µµ ±×·¯ÇÑ dll°°Àº °ÍÀÌ ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù. ÀÖ´Ù¸é ¾î¶»°Ô ½á¾ß ÇÏ´ÂÁö¿¡ ´ëÇØ¼µµ ¾Ë·ÁÁÖ¼¼¿ä.
¹°·Ð ¸®´ª½º(À¯´Ð½º)¿¡µµ dll°ú °°ÀÌ µ¿ÀûÀ¸·Î ¶óÀ̺귯¸®¸¦ ÀûÀç ÇϽô ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. º¸Åë µ¿Àû ¶óÀ̺귯¸® ¶ó°í ºÒ¸®¿ì´Âµ¥, ÇÁ·Î±×·¥ ½ÇÇà µµÁß¿¡ ÇÊ¿äÇÒ ¶§ ÀûÀçÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. dll°ú ¸Å¿ì ºñ½ÁÇÕ´Ï´Ù. µ¿Àû ¶óÀ̺귯¸®¸¦ ¸¸µé°í ÇÁ·Î±×·¥¿¡¼ »ç¿ëÇÏ´Â ¹æ¹ýÀº ¾Æ·¡ÀÇ ±â»ç¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.
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)¼ö¿Í Á»ºñ ÇÁ·Î¼¼½ºÀÇ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½À» Âü°íÇϱ⠹ٶõ´Ù.
1.36 ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ ±³È¯
- ºÎ¸ðÇÁ·Î¼¼½º¿Í ÀÚ½ÄÇÁ·Î¼¼½º, ȤÀº ÇÁ·Î¼¼½º¿Í ÇÁ·Î¼¼½º°£ µ¥ÀÌÅ͸¦ ±³È¯ÇØ¾ßµÉ ÀÏÀÌ »ý°å½À´Ï´Ù. ÆÄÀÏÀ» ÀÌ¿ëÇÏ´Â °Ç ³Ê¹« ½Å°æ½á¾ß ÇÒ°Ô ¸¹Àº°Í °°¾Æ¼¿ä.. ÁÁÀº ¹æ¹ýÀÌ ¾øÀ»·±Áö¿ä.
ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ ±³È¯À» À§Çؼ´Â IPC¸¦ »ç¿ëÇÕ´Ï´Ù. IPC´Â Inter Procress CommuncationÀÇ ÁÙÀÓ¸»·Î½á ³»ºÎ ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ ±³È¯°ú ÇÁ·Î¼¼½º µ¿±âȸ¦ À§Çؼ Á¦°øÇÏ´Â ÇÔ¼öÀÇ ¸ðÀ½ÀÔ´Ï´Ù. BSD½ºÅ¸ÀÏÀÇ IPC¿Í SYSTEM V ½ºÅ¸ÀÏ IPC°¡ ÀÖ½À´Ï´Ù. IPCȰ¿ë¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ URLÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.
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..°ú °°Àº Àü¿ëÀÇ ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÑ´Ù.
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)¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ÇÔ¼ö»çÀüÀ» Âü°íÇϼ¼¿ä.
1.44 ÆÄÀÏÀÇ Á¤º¸ ¾ò¾î¿À±â
- ÆÄÀÏÀÇ À̸§, ±ÇÇÑ, Å©±âµîÀ» ¾ò¾î¿À°í ½Í½À´Ï´Ù.
ÆÄÀϰú °ü·ÃµÈ Á¤º¸´Â stat(2), fstat(2)µîÀÇ ÇÔ¼ö¸¦ ÅëÇØ¼ ¾ò¾î¿Ã ¼ö ÀÖ½À´Ï´Ù. À̵é ÇÔ¼ö¸¦ »ç¿ëÇϸé stat±¸Á¶Ã¼¿¡ ÇØ´ç ÆÄÀÏÀÇ Á¤º¸¸¦ ä¿ö¼ µÇµ¹·ÁÁÝ´Ï´Ù. inode, mode, uid, gid, size´Â ¹°·ÐÀÌ°í ÆÄÀÏÀÇ »ý¼º½Ã°£, ¼öÁ¤½Ã°£, º¯°æ½Ã°£ µî¿¡ ´ëÇÑ Á¤º¸µµ ¾ò¾î¿Ã ¼ö ÀÖ½À´Ï´Ù.
1.45 »ç¿ëÀÚ ·Î±×ÀÎ Á¤º¸ ¾ò¾î¿À±â
- ÅÚ³ÝÀ¸·Î À¯´Ð½º ¼¹ö¿¡ Á¢±ÙÇϸé ÇöÀç Á¢±ÙÇÑÀ¯Àú·Î ¸¶Áö¸· ¾ðÁ¦ Á¢±ÙÇß´ÂÁö µî¿¡ ´ëÇÑ ·Î±×ÀÎ ±â·ÏÀÌ ³ª¿É´Ï´Ù. ÀÌ·± »ç¿ëÀÚ ·Î±×ÀÎ Á¤º¸¸¦ ¾î¶»°Ô ¾ò¾î¿Ã ¼ö ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.
À¯´Ð½º¿¡¼´Â »ç¿ëÀÚ Á¤º¸¸¦ utmpÆÄÀÏ¿¡ ±â·ÏÇÕ´Ï´Ù. utmp´Â ÇöÀç ´©°¡ ½Ã½ºÅÛÀ» »ç¿ëÇϰí ÀÖÀ¸¸ç ¾î¶² Å͹̳Î(tty)¸¦ »ç¿ëÇϰí ÀÖ´ÂÁö ¾î¶² IP¿¡¼ Á¢±ÙÇß´ÂÁö µî¿¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇϰí ÀÖ½À´Ï´Ù.
utmpÁ¤º¸ÀÇ ÃëµæÀ» À§Çؼ ¸®´ª½º(À¯´Ð½º Æ÷ÇÔ)´Â getutent(3)¶ó´Â ÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù. getutent(3)¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ ·Î±×ÀÎ Á¤º¸¸¦ utmp±¸Á¶Ã¼(struct utmp)¿¡ ³Ö¾î¼ µÇµ¹·Á ÁÝ´Ï´Ù. utmp¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ¾Æ·¡ÀÇ »çÀÌÆ®¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù.
1.46 select¿Í pollÀÇ Â÷ÀÌÁ¡
- °³ÀÎÀûÀ¸·Î °øºÎ¸¦ ÇØº»°á°ú select¿Í pollÀº °ÅÀÇ ºñ½ÁÇØ º¸ÀÌ´øµ¥, ¾î¶²Á¡ÀÌ ´Ù¸¥Áö¿ä. ±×¸®°í ÀÔÃâ·Â´ÙÁßÈÀÇ ±¸Çö¿¡ ¾î¶²°ÍÀ» »ç¿ëÇÏ´Â°Ô ´õ ÁÁÀºÁö ±Ã±ÝÇÕ´Ï´Ù.
1.47 °£´ÜÇÑ DB ½Ã½ºÅÛ¿¡ ´ëÇØ¼
- ÁÖ¼Ò·Ï, ¸î¸î ÆÄÀÏ Á¤º¸¿Í °°Àº °£´ÜÇÑ Á¤º¸¸¦ ÀúÀåÇÒ ¼ö Àִ ǥÁØÀûÀÎ DB½Ã½ºÅÛÀÌ ÀÖ´ÂÁö¿ä. mysql, pgsql, oracleÀº ³Ê¹« Å©°í º°µµÀÇ ÇÁ·Î±×·¥À» ¼³Ä¡ÇØ¾ß ÇϹǷΠÁ¦¿Ü ½ÃŰ·Æ´Ï´Ù. º°µµÀÇ ÇÁ·Î±×·¥ ¼³Ä¡ÇÊ¿ä¾øÀÌ °£´ÜÇÏ°í ¹ü¿ëÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â DB¸¦ ã°í ÀÖ½À´Ï´Ù.
dbmÀÇ gnu¹öÁ¯ÀÎ gdbmÀ» ÃßõÇÕ´Ï´Ù. dbmÀº °ü°èÇü µ¥ÀÌŸ ±¸Á¶ ¸ðµ¨À» °¡ÁöÁö ¾Ê´Â Ű -> °ªÀÇ °£´ÜÇÑ ±¸Á¶¸¦ °¡Áý´Ï´Ù. ´ç¿¬È÷ °¡º±°í ºü¸£¸ç °ÅÀÇ Ç¥ÁØÀ̹ǷΠº°µµÀÇ ÇÁ·Î±×·¥ ¼³Ä¡¾øÀÌ db½Ã½ºÅÛÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
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)ÀÌ ¹«¾ùÀΰ¡¿ä ?
- ÀÌÁ¦ ¸· ¸®´ª½º ÇÁ·Î±×·¡¹Ö¿¡ ÀÔ¹®ÇÑ Ãʺ¸ÀÔ´Ï´Ù. ½Ã±×³ÎÀ» »ç¿ëÇÏ¸é µÈ´Ù¶ó´Â ¸»ÀÌ ¸¹ÀÌ ³ª¿À´õ±º¿ä. ÀÌ·²¶© ÀÌ·± ½Ã±×³ÎÀÌ Àü´ÞµÈ´Ù.. Àú·²¶© Àú·± ½Ã±×³ÎÀÌ Àü´ÞµÈ´Ù. ±×·±µ¥ ¾Æ¹«·¡µµ ½Ã±×³ÎÀÌ Á¤È®È÷ ¹«¾ðÁö ¾ÆÁ÷ ¸ð¸£°Ú½À´Ï´Ù.
½Ã±×³Î ´Ù·ç±âÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.
1.53 ½Ã±×³ÎÀ» ÀÒ¾î¹ö¸®´Â °Í °°½À´Ï´Ù.?
- ½Ã±×³ÎÀÌ Àü´ÞµÇ¾î¼ ½Ã±×³Î Çڵ鷯°¡ 󸮵ǰí Àִµ¥, µ¿ÀÏÇÑ ½Ã±×³ÎÀÌ ¶Ç Àü´ÞµÇ¸é ºí·°µÈ´Ù°í ¾Ë°í ÀÖ½À´Ï´Ù. ±×·±µ¥ ¿©±â¿¡ ½Ã±×³ÎÀÌ ´Ù½Ã Àü´ÞµÇ¸é ÀÌÀü ½Ã±×³ÎÀº »ç¶óÁ® ¹ö¸®´õ±º¿ä. ÀÌ·¸°Ô ½Ã±×³ÎÀ» ÀÒ¾î¹ö¸®¸é ÇÁ·Î±×·¥ÀÌ Á» ÀÌ»óÇØÁú°Í °°Àºµ¥, ¿©·¯°³ÀÇ ½Ã±×³ÎÀÌ Àü´ÞµÇ´õ¶óµµ ÀÒ¾î¹ö¸®Áö ¾Ê°í »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´ÂÁö¿ä.
½Ã±×³ÎÀº ´ë±â¿À» °¡ÁöÁö ¾Ê½À´Ï´Ù. ½Ã±×³Î Çڵ鷯°¡ Á¾·áµÇÁö ¾ÊÀº »óÅ¿¡¼ ´Ù¸¥ ½Ã±×³ÎÀÌ µé¾î¿Â´Ù¸é ÀÌ ½Ã±×³ÎÀº ºí·°µÇ°í(signal°ü·Ã ÇÔ¼ö·Î ºí·°½Ãų ¼ö ÀÖ´Ù) Çڵ鷯 Á¾·áÈÄ ºí·°µÈ ½Ã±×³Î¿¡ ´ëÇÑ Çڵ鷯¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ½Ã±×³ÎÀÌ ºí·°µÇ¾î ÀÖ´Â »óÅ¿¡¼ ¶Ç´Ù½Ã ½Ã±×³ÎÀÌ µé¾î¿Â´Ù¸é ½Ã±×³ÎÀ» ¹ö·ÁÁö°Ô µË´Ï´Ù.
ÇØ°á¹æ¹ýÀº ½Ã±×³ÎÀÇ ´ë±â¿À» À¯ÁöÇÏ´Â ¹æ¹ýÀ¸·Î RTS(RealTime Signal)À» »ç¿ëÇÏ¸é µË´Ï´Ù.
1.54 ÆÄÀÏ º¯°æ °Ë»ç
- ÆÄÀÏÀÇ ¸ñ·ÏÀ» ¸¸µé°í ÀÌ ÆÄÀÏ¿¡ ´ëÇÑ ¾î¶² º¯°æÀÌ ÀÖ´ÂÁö È®ÀÎÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé°í ½Í½À´Ï´Ù. ¾î¶² ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÒ·±Áö¿ä.
°£´ÜÇÏ°Ô stat(2)°è¿ÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÆÄÀÏÀÇ »çÀÌÁî¿Í º¯°æ³¯Â¥µîÀ» ÁÖ±âÀûÀ¸·Î °Ë»çÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ·¯ÇÑ °ªµéÀº ½±°Ô ÀÓÀÇ·Î º¯°æÇÒ ¼ö Àֱ⠶§¹®¿¡ Áß¿äÆÄÀÏÀÇ °Ë»ç¸¦ À§Çؼ´Â ºÎÀûÀýÇÑ ¸éÀÌ ÀÖ½À´Ï´Ù. ÀÌ·² ¶§´Â ÆÄÀÏÀÇ Hash°ªÀ» ¾ò¾î³»¾î¼ ºñ±³ÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. Hash´Â MD5(12)¸¦ »ç¿ëÇÏ¸é ¹«³ÇÕ´Ï´Ù.
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
´ÙÀ½ÀÇ ¿¹Á¦¸¦ Âü°íÇÏ½Ã¸é ½±°Ô ÀÌÇØÇÏ½Ç ¼ö ÀÖÀ»°Ì´Ï´Ù.
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++;
}
}
|
|