ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. ¸®´ª½º Ä¿³Î ¸ðµâ ÇÁ·Î±×·¡¹Ö - 2.4À± »ó¹è dreamyun@yahoo.co.kr
1절. ¼Ò°³1.1절. ÀÌ ¹®¼¿¡ ´ëÇØ¼ÀÌ ¹®¼´Â The Linux Kernel Module Programming GuideÀ» Âü°íÇßÀ¸¸ç, ¸¹Àº ºÎºÐ ¿ø¹®À» ±×´ë·Î ¹ø¿ªÇÏ¿´´Ù. ±×·¯³ª º»¹®À» ½ÇÁ¦ Å×½ºÆ® ÇÏ¸é¼ ³»¿ëÀÌ ¹ÌÈíÇÑ ºÎºÐÀ» º¸¿ÏÇÏ¿´À¸¸ç, ¸î¸î Ʋ¸° ºÎºÐ¿¡ ´ëÇÑ ¼öÁ¤µµ ÀÌ·ç¾îÁ³´Ù. 1.2절. Ä¿³Î ¸ðµâÀ̶õ ?Ä¿³Î ¸ðµâ¿¡ ´ëÇØ¼ ÀÌÇØÇϰí ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§Çؼ ´ç¿¬È÷ ¿©·¯ºÐÀº C¾ð¾î¿Í ¸®´ª½º ½Ã½ºÅÛ¿¡ ´ëÇÑ ±âº»ÀûÀÎ ÀÌÇØ¸¦ Çϰí ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ ¹®¼´Â ¸®´ª½º(À¯´Ð½º) ½Ã½ºÅÛ°ú C¿¡ ´ëÇÑ ±âº» ÀÌÇØ¸¦ Çϰí ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ÀÛ¼ºµÉ °ÍÀÌ´Ù. Ä¿³Î ¸ðµâÀ̶õ Çʿ信 µû¶ó Ä¿³Î¿¡ ·ÎµåÇϰųª ¾ð·Îµå ÇÒ ¼ö Àִ ƯÁ¤ÇÑ ±â´ÉÀ» ¼öÇàÇÏ´Â ÄÚµå(ÇÁ·Î±×·¥)ÀÌ´Ù. ÀÌ·¸°Ô ÇÏ¹Ç·Î½á ½±°Ô Ä¿³ÎÀÇ ±â´ÉÀ» È®ÀåÇÒ ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó ¿î¿µÃ¼Á¦¸¦ ¸®ºÎÆÃ ÇÏÁö ¾Ê°íµµ ¿øÇÏ´Â ±â´ÉÀ» ¼öÇàÇÒ ¼ö ÀÖµµ·Ï ¸¸µé ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼ ¾î¶² Çϵå¿þ¾î¸¦ Á¦¾îÇϱâ À§ÇÑ ¹®ÀÚ ÀåÄ¡(device drive)¸¦ ÀÛ¼ºÇØ¾ß ÇÑ´Ù°í »ý°¢Çغ¸ÀÚ. ¸¸¾à ¸ðµâ±â´ÉÀ» Á¦°øÇÏÁö ¾Ê´Â Ä¿³ÎÀ̶ó¸é Ä¿³ÎÀ» Á÷Á¢¼öÁ¤ÇÏ´Â ¹æ½ÄÀ» µ¿¿øÇؼ Ä¿³Î¿¡ ÇÊ¿äÇÑ ±â´ÉÀ» Ãß°¡½ÃÄÑ¾ß ÇÒ °ÍÀÌ´Ù. ÇÁ·Î±×·¥ ÀÚü°¡ ¾î·Á¿öÁö´Â °ÍÀº ¹°·ÐÀÌ°í ±â´ÉÀ» Å×½ºÆ® Çϱâ À§Çؼ´Â °è¼ÓÀûÀÎ ¸®ºÎÆÃ ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ°Ô µÇ¹Ç·Î °³¹ß±â°£ ¿ª½Ã ±ØÀûÀ¸·Î ´Ã¾î³¯ ¼ö ¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù. ¶ÇÇÑ Ä¿³Î¿¡ ÇÊ¿äÇÑ ±â´ÉÀÌ Ãß°¡µÉ ¶§¸¶´Ù Ä¿³Î¿¡ °è¼ÓÇØ¼ Äڵ尡 Ãß°¡ µÊÀ¸·Î Ä¿³ÎÀÇ Å©±âµµ ¸Å¿ì Ä¿Áö°Ô µÉ°ÍÀÌ´Ù. »ç¿îµåÄ«µå¸¦ À§ÇÑ ±â´ÉÀ» Ãß°¡Çߴµ¥ ÇØ´ç »ç¿îµåÄ«µå¸¦ °¡ÁöÁö ¾Ê´Â À¯Àúµµ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ·² °æ¿ì´Â ±×¾ß¸»·Î ¾µµ¥ ¾ø´Â ÀÚ¿ø³¶ºñ°¡ µÇ´Â ¼ÀÀÌ´Ù. ` Ä¿³Î ¸ðµâ·Î½á ÀÛµ¿Çϵµ·Ï ¸¸µé¾ú´Ù¸é ¾µµ¥¾ø´Â ±â´ÉÀ» ÇÏ´Â ¸ðµâÀº ¾ð·Îµå ½ÃŰ¸é ±×¸¸ÀÌ´Ù. ÀÌ ¹®¼´Â ¸®´ª½º Ä¿³Î 2.4¸¦ ±âÁØÀ¸·Î ÀÛ¼ºµÇ¾ú´Ù. 2절. Ä¿³Î ¸ðµâ ÇÁ·Î±×·¡¹ÖÀÇ ±âº»2.1절. Ä¿³Î¿¡ ¸ðµâ ÀûÀç½Ã۱âÇöÀç Ä¿³Î¿¡¼ ÀÛµ¿ÁßÀÎ ¸ðµâÀÇ ¸ñ·ÏÀº lsmod ¸í·ÉÀ» ÅëÇØ¼ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
±×·³ Ä¿³ÎÀº ÀÌ·¯ÇÑ ¸ðµâÀ» ¾î¶»°Ô ã¾Æ¼ ÀûÀç½ÃŰ´Â °É±î. Ä¿³ÎÀÌ ¾î¶² ¸ðµâÀ» Æ÷ÇÔÇϰíÀÚ ÇÒ¶§ ÇØ´ç ¸ðµâÀÌ ¾ÆÁ÷ Ä¿³Î¿¡ ÀûÀçµÇ¾î ÀÖÁö ¾Ê´Ù¸é ¸ðµâ µ¥¸ó(daemon)ÀÎ kmod°¡ modprobe¸¦ ½ÇÇà½ÃÄѼ ¸ðµâÀ» ÀоîµéÀÌ°Ô µÈ´Ù. À̶§ modprobe´Â ´ÙÀ½Áß ÇϳªÀÇ ¹æ¹ýÀ» ÀÌ¿ëÇØ¼ Àоîµé¿©¾ßÇÒ ¸ðµâÀ» ã°Ô µÈ´Ù.
¸¸¾à modprobe°¡ ½Äº°ÀÚ¸¦ ÀÌ¿ëÇÒ °æ¿ì, ÇØ´ç ½Äº°ÀÚ¿¡ ´ëÇÑ ÁøÂ¥ ¸ðµâÀ̸§À» ¾Ë¾Æ¿Í¾ß ÇÒ°ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ Á¤º¸´Â /etc/modules.conf¿¡ ÀúÀåµÇ¾î ÀÖ´Ù.
´ÙÀ½ modprobe´Â /lib/modules/version/module.depÆÄÀÏÀ» °Ë»çÇÑ´Ù. ¿©±â¿¡´Â ÇØ´ç¸ðµâÀÌ ½ÇÇàµÇ±âÀ§ÇØ ÇÊ¿äÇÑ ´Ù¸¥ ¸ðµâµé Áï ¸ðµâÀÇÁ¸¼º¿¡ °üÇÑ Á¤º¸µéÀÌ ÀÖ¾î¼ softdog.o¸¦ ÀûÀçÇϱâ À§Çؼ ´Ù¸¥ ¸ðµâÀÌ ÇÊ¿äÇÑÁö È®ÀÎÇÏ°í ¹Ì¸® ÀûÀç½ÃŲ´Ù. ÀÌ ÆÄÀÏÀº depmod -a¸í·ÉÀ¸·Î »ý¼º½Ãų ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î msdos.o ¸ðµâÀº fat.o¸ðµâÀÌ ¿ì¼±ÀûÀ¸·Î ÀûÀçµÇ¾î ÀÖ¾î¾ß¸¸ ÇÑ´Ù. modprobe´Â modeule.depÆÄÀÏÀ» ÂüÁ¶Çؼ ÀÇÁ¸¼ºÀ» °Ë»çÇÏ°Ô µÈ´Ù. ¸¶Áö¸·À¸·Î modprobe´Â insmod¸¦ ÀÌ¿ëÇØ¼ ¿øÇÏ´Â ¸ðµâÀ» ÀûÀçÇϱâ À§Çؼ ¿ì¼±ÀûÀ¸·Î ÇÊ¿äÇÑ ¸ðµâÀ» ÀûÀç½ÃŰ°Ô µÈ´Ù. insmod´Â /lib/modules/version/À» Á÷Á¢ÂüÁ¶Çؼ ¸ðµâÀ» ÀûÀçÇÑ´Ù. ÃÖÁ¾ÀûÀ¸·Î ¿©·¯ºÐÀÌ msdos ¸ðµâÀ» ¿Ã¸®±â¸¦ ¿øÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
¸®´ª½º¿¡¼ »ç¿ëµÇ´Â modprobe, insmod, depmod¿Í °°Àº ÇÁ·Î±×·¥Àº modutils(ȤÀº mod-utils) ÆÐŰÁö¿¡ Æ÷ÇԵȴÙ. ±×·³ /etc/modules.conf¸¦ °£·«ÇÏ°Ô »ìÆìº¸°í À̹øÀåÀ» ³¡¸¶Ä¡µµ·Ï ÇϰڴÙ.
path[misc]´Â misc¸ðµâÀ» ãÀ» °æ·ÎÀÇ ÁöÁ¤À» À§Çؼ »ç¿ëµÈ´Ù. alias ´Â kmode°¡ ½Äº°ÀÚ eth0À» È£Ãâ ÇßÀ» ¶§ ne2k-pci¸¦ È£ÃâÇϵµ·Ï ÇÑ´Ù. alias´Â ²Ï Áß¿äÇÏ°Ô »ç¿ëµÉ ¼ö Àִµ¥ ÇϳªÀÇ ½Ã½ºÅÛ¿¡ µ¿ÀÏÇÑ ÀåÄ¡°¡ 2°³ ÀÌ»ó ºÙ¾î ÀÖÀ»¶§ À̸¦ ½Äº°ÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. 2.2절. Ãʰ£´Ü ¸ðµâÁ¦ÀÛ : Hello World¾î¶² ¿ª»çÀûÀÎ ÀÌÀ¯°¡ ÀÖ´ÂÁö ¸ð¸£°ÚÁö¸¸ ´ëºÎºÐ ÇÁ·Î±×·¡¹ÖÀÔ¹® À» Çϴµ¥ ÀÖ¾î¼ °¡Àå ¸ÕÀú "Hello World"¸¦ Ãâ·ÂÇÏ´Â Äڵ带 À强ÇÏ´Â µ¥¿¡¼ ºÎÅÍ ½ÃÀÛÇÑ´Ù. Hello World Ãâ·Â ÄÚµå¿Í °ü·ÃµÈ Àç¹ÌÀÖ´Â ±ÛÀÌ Àִµ¥ Çѹø ÀÐ¾î º¸±â ¹Ù¶õ´Ù. Hello WorldÀÇ º¯Ãµ»ç ¿©±â¿¡¼µµ "Hello World"¸¦ Ãâ·ÂÇÏ´Â Äڵ带 ¸¸µå´Â °ÍÀ¸·Î ¸ðµâ ÇÁ·Î±×·¡¹ÖÀ¸·ÎÀÇ ¹ß°ÉÀ½À» ³»µóµµ·Ï ÇϰڴÙ. À̰ÍÀº ¸Å¿ì °£´ÜÇÑ ¸ðµâÀε¥, ¾ÆÁ÷ ÄÄÆÄÀÏ ¹æ¹ýÀ» ´Ù·çÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ¸ðµâ ÄÄÆÄÀÏÀº 2.3절¿¡¼ ´Ù·çµµ·Ï ÇϰڴÙ.
2.2.1절. printk()¿¡ ´ëÇØ¼ÀϹÝÀûÀ¸·Î printk¸¦ ÀÌ¿ëÇϸé (ÇÔ¼öÀ̸§ÀÇ ¾î°¨ ¶§¹®¿¡) ƯÁ¤ÇÑ ¸Þ½ÃÁö¸¦ Ç¥ÁØÃâ·ÂÇÒ °ÍÀ¸·Î »ý°¢ÇÏ´Â °æ¿ì°¡ ¸¹Àºµ¥ printk´Â À¯Àú¸¦ À§ÇÑ ¾î¶² Ãâ·Âµµ ÇÏÁö ¾Ê´Â´Ù. À̸§°ú´Â ´Þ¸® ·Î±×³ª °æ°í ¸Þ½ÃÁö¸¦ ³²±â±â À§ÇÑ Ä¿³Î·Î±ë ¸ñÀûÀ¸·Î »ç¿ëµÈ´Ù. ÀϹÝÀûÀÎ ·Î±×°ü·Ã ¶óÀ̺귯¸®³ª ÇÔ¼öµéÀÌ ±×·¸µíÀÌ printkµµ ¿ì¼±¼øÀ§(priority)¸¦ °¡Áø´Ù. ¸ðµÎ 8´Ü°èÀÇ ¿ì¼±¼øÀ§¸¦ °¡Áö¸ç <1> KERN_ALERT ¿Í °°Àº ¹æ½ÄÀ¸·Î °áÁ¤ÇÒ ¼ö ÀÖ´Ù. ÀÌµé ¿ì¼±¼øÀ§¿¡ ´ëÇÑ ¼±¾ðÁ¤º¸´Â linux/kernel.h¿¡¼ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ¿ì¼±¼øÀ§¸¦ Á¤Çϱ⠱ÍÂú°Å³ª Á¤ÇÒ ¼ö ¾ø´Ù¸é ±âº» ¿ì¼±¼øÀ§ DEFAULT_MESSAGE_LOGLEVELÀ» »ç¿ëÇÏ¸é µÈ´Ù. ¸¸¾à syslogd¿Í klogd°¡ ½ÇÇàÁßÀ̶ó¸é ¸Þ½ÃÁö´Â /var/log/messages¿¡ Ãß°¡ µÈ´Ù. ´ÙÀ½Àº ½ÇÁ¦ ÀúÀåµÈ ·Î±×µéÀÌ´Ù.
2.3절. Ä¿³Î ¸ðµâ ÄÄÆÄÀÏ ÇϱâÄ¿³Î ¸ðµâÀ» ÄÄÆÄÀÏÇϱâ À§Çؼ´Â Ưº°ÇÑ gcc ¿É¼Ç°ú ´õºÒ¾î ¸î°¡Áö °ªµéÀÇ Á¤ÀÇ(symbols define)°¡ ÇÊ¿äÇÏ´Ù. ÀÌÀ¯´Â Ä¿³Î¸ðµâ ÄÄÆÄÀϽà »ç¿ëµÇ´Â Ä¿³Î Çì´õµéÀÌ Ä¿³Î¹öÁ¯¿¡ ¸Å¿ì ÀÇÁ¸ÀûÀÏ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀÌ·¯ÇÑ Á¤ÀÇ´Â gccÀÇ -D¿É¼ÇÀ» ÀÌ¿ëÇϰųª ȤÀº #define ¼±Çàó¸®ÀÚ¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. À̹ø Àå¿¡¼´Â Ä¿³ÎÄÄÆÄÀÏÀ» Çϱâ À§Çؼ ÇÊ¿äÇÑ ³»¿ëµé¿¡ ´ëÇØ¼ ´Ù·ê °ÍÀÌ´Ù.
´ÙÀ½Àº Ä¿³Î ¸ðµâÀ» ÄÄÆÄÀÏÇϱâ À§ÇÑ ÀüÇüÀûÀÎ MakefileÀÌ´Ù.
2.2절¿¡ ÀÖ´Â ¿¹Á¦¸¦ º¸¸é init_module()¿¡¼ 0À» ¸®ÅÏÇϰí ÀÖ´Ù. ±×·±µ¥ ´Ù¸¥ °ªÀ» ¸®ÅÏÇϵµ·Ï ÇÏ¸é ¾î¶»°Ô µÉ±î ? Áö±ÝÇѹø Å×½ºÆ® ÇØº¸±â ¹Ù¶õ´Ù. 2.4절. Hello World 2initÇÔ¼ö¿Í cleanupÇÔ¼öÀÇ À̸§ÀÌ ¹Ýµå½Ã init_module()¿Í cleanup_module()·Î ÀÛ¼ºµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀº (ºñ·Ï È¥µ¿À» ÁÙ¿©ÁÖ±ä ÇϰÚÁö¸¸) ¿ØÁö ÀÌÄ¡¿¡ ¸ÂÁö ¾Ê´Â°Í °°´Ù. ¸®´ª½º Ä¿³Î 2.4ºÎÅÍ´Â ÀÌµé °íÁ¤µÈ À̸§´ë½Å ´Ù¸¥ À̸§À¸·Î »ç¿ë°¡´ÉÇϸç, À̸¦ À§Çؼ module_init()¿Í module_exit()ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. ¿¹Á¦ : hello_re.c
2.5절. Hello World 3 : ¶óÀ̼¾½º¿Í ¸ðµâ¿¡ ´ëÇÑ Á¤º¸Ä¿³Î¸ðµâÀº ´Ù¸¥ ½Ã½ºÅÛ/À¯ÀúÇÁ·Î±×·¥¿¡ ºñÇØ ¿î¿µÃ¼Á¦¿¡ ´õ¿í¹Î°¨ÇÑ ¿µÇâÀ» ³¢Ä¥ ¼ö ÀÖ´Ù. ±×·±ÀÌÀ¯·Î ÃÖ¼ÒÇÑ Ä¿³Î¸ðµâ¿¡´Â Ä¿³ÎÀÛ¼ºÀÚ¿¡ ´ëÇÑ Á¤º¸°¡ µé¾î°¡µµ·Ï ÀÛ¼ºÇÏ´Â°Ô ÁÁÀ» °ÍÀÌ´Ù. ¸®´ª½º Ä¿³Î 2.4À̻󿡼 Áö±Ý±îÁö ¿ì¸®°¡ ÀÛ¼ºÇÑ Ä¿³Î ¸ðµâÀ» ÀûÀçÇÏ·Á°í ÇÏ¸é ´ÙÀ½°ú °æ°í ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÒ °ÍÀÌ´Ù.
ÀÌ¿Í ºñ½ÁÇÏ°Ô MODULE_DESCRIPTION()°ú MODULE_AUTHOR()¸ÅÅ©·Î¸¦ ÀÌ¿ëÇØ¼ ¸ðµâÀÇ ¿øÀúÀÛÀÚ¿Í ¸ðµâ¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» °çµéÀÏ ¼öµµ ÀÖ´Ù. ÀÌ·¯ÇÑ ¸ðµç ¸ÅÅ©·Î´Â linux/module.h¿¡ Á¤ÀÇ µÇ¾îÀÖ´Ù. ÀÌµé ¸ÅÅ©·Î °ªµéÀº Ä¿³Î¿¡ ÀÇÇØ¼ Á÷Á¢ ÀÌ¿ëµÇÁö´Â ¾ÊÁö¸¸ objdump¿Í °°Àº µµ±¸¸¦ ÀÌ¿ëÇÒ¶§ ¸ðµâ¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò´Âµ¥ µµ¿òÀ» ÁØ´Ù.
¿¹Á¦ : hello_li.c
2.6절. ¸í·ÉÇà ÀÎÀÚÀÇ Ã³¸®Ä¿³Î ¸ðµâµµ ¸í·ÉÇà ÀÎÀÚ¸¦ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Ù. ±×·¯³ª ÀϹÝÀûÀ¸·Î ÀÌ¿ëÇÏ´Â argc/argv ±â¹ýÀ» »ç¿ëÇÒ ¼ö´Â ¾ø´Ù. ¸ðµâ·ÎÀÇ ¾Æ±Ô¸ÕÆ® Àü´ÞÀº MODULE_PARM()¸ÅÅ©·Î¸¦ ÅëÇØ¼ ÀÌ·ç¾îÁø´Ù. MODULE_PARM()¸ÅÅ©·Î´Â 2°³ÀÇ ÀÎÀÚ¸¦ °¡Áø´Ù. ù ¹øÂ° ÀÎÀÚ´Â °ªÀÌ ÀúÀåµÉ º¯¼ö¸íÀ̰í, µÎ¹øÂ° ÀÎÀÚ´Â ÀúÀåµÉ µ¥ÀÌÅÍÀÇ Å¸ÀÔÀ» ³ªÅ¸³½´Ù. µ¥ÀÌÅÍ Å¸ÀÔÀº "b" : ¹ÙÀÌÆ®, "h": short int, "i": integer, "l": long int, "s":string(¹®ÀÚ¿)°¡ ÀÖ´Ù. ¹®ÀÚ¿Àº char * ŸÀÔÀ̸ç insmod·Î È£ÃâµÉ¶§ ¸Þ¸ð¸®°¡ ÇÒ´çµÈ´Ù. ´ÙÀ½Àº °£´ÜÇÑ È°¿ë¿¹ÀÌ´Ù.
¹è¿µµ Áö¿øµÇ´Âµ¥, '-'¸¦ ÀÌ¿ëÇØ¼ ¹è¿ÀÇ ÃÖ¼ÒÅ©±â¿Í ÃÖ´ëÅ©±â¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ÁÖ¾îÁú¼ö ÀÖ´Â ÀÎÀÚÀÇ ÃÖ¼Ò¿Í ÃÖ´ë °¹¼ö¸¦ Á¤ÇÒ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù.
ÀÌÁ¦ ½ÇÁ¦ ¸ðµâÀ» ½ÇÇà½ÃŰ¸é¼ ÀÎÀÚ¸¦ ³Ñ±â´Â ¹æ¹ýÀ» ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. ÀÎÀÚ´Â [º¯¼ö¸í]=[°ª]ÀÇ ÇüÅ·Π³Ñ¾î°£´Ù. ¸¸¾à ¸ðµâ ÄÚµå»ó¿¡ MODULE_PARM(myint, "i"); ·Î µÇ¾î ÀÖ´Ù¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ÀÎÀÚ¸¦ ³Ñ±ä´Ù.
¹è¿ÀÇ °æ¿ì¿¡´Â ÀÎÀÚ°¡ ÁöÁ¤ÇÑ ÃÖ´ë/ÃÖ¼ÒÀÇ ¹üÀ§¸¦ ¹þ¾î³¯ °æ¿ì ¿¡·¯¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ¸ç ¸ðµâÀÌ ÀûÀçµÇÁö ¾Ê´Â´Ù. ÀÏ¹Ý ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ¼öÇàÇÏ´Â argc¸¦ ÅëÇÑ ¾Æ±Ô¸ÕÆ® °¹¼ö °Ë»ç¿Í ºñ½ÁÇÑ ÇüŶó°í º¸¸é µÈ´Ù. ¹è¿ÀÇ °¢ ¿ä¼Ò´Â ','¸¦ ÅëÇØ¼ ±¸ºÐµÇ¾î Áø´Ù.
¿¹Á¦ : hello_arg.c
2.7절. ¸ðµâº° ºÐÇÒ ÄÄÆÄÀϺ¸Åë Á¶±ÝÀÌ¶óµµ ±Ô¸ð°¡ ÀÖ´Â ½Ã½ºÅÛ/À¯Àú ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ ¶§´Â ¼Ò½ºÀÇ °ü¸®¸¦ À§Çؼ ÇÔ¼ö/±â´Éº°·Î ¼Ò½º¸¦ ºÐÇÒÇØ¼ ÄÄÆÄÀÏÇÑ´Ù. Ä¿³Î ¸ðµâ¿ª½Ã ÀÌ·¯ÇÑ ºÐÇÒ ÄÄÆÄÀÏÀ» Áö¿øÇϴµ¥, ¾Æ·¡ÀÇ Çü½ÄÀ» µû¶óÁÖ¾î¾ß ÇÑ´Ù.
¿¹Á¦ : start.c
¿¹Á¦ : stop.c
´ÙÀ½Àº ÄÄÆÄÀÏÀ» À§ÇÑ MakefileÀÌ´Ù.
|
|
||||||||||||||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|