ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> <chapter lang=ko> <!-- ÀÛ¼ºÀÚ : yundream --> <!-- ÀÛ¼ºÀÏ : 2004/06/04 --> <!-- ¿¬¶ôó : yundream@joinc.co.kr --> <!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> <title>shmat(2)</title> <!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> <para> °øÀ¯¸Þ¸ð¸® °ü·Ã ¿¬»ê </para> <!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> <section> <title>»ç¿ë¹ý</title> <para> <screen> #include <sys/ipc.h> #include <sys/shm.h> void *shmat(int shmid, const void *shmaddr, int shmflg); int shmdt(const void *shmaddr); </screen> </para> </section> <!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> <section> <title>¼³¸í</title> <para> shmat()´Â °øÀ¯¸Þ¸ð¸® ½Äº°ÀÚÀÎ<emphasis>shmid</emphasis>¿¡ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¸¦ ºÙÀ̱â À§Çؼ »ç¿ëÇÑ´Ù. ºÙÀÌ´Â ¿µ¿ªÀº <emphasis>shmaddr</emphasis>·Î °áÁ¤ÇÒ ¼ö ÀÖ´Ù. </para> <para> ¸¸¾à <emphasis>shmaddr</emphasis>°¡ NULLÀ̶ó¸é ½Ã½ºÅÛÀº Àû´çÇÑ »ç¿ëÇÏÁö ¾Ê´Â ¸Þ¸ð¸® ¿µ¿ªÀ» ºÙÀÌ°Ô µÈ´Ù. </para> <para> ¸¸¾à <emphasis>shmaddr</emphasis>°¡ NULLÀÌ ¾Æ´Ï°í SHM_RND°¡ shmflg·Î ÁöÁ¤µÇ¾î ÀÖ´Ù¸é shmaddrÀº SHMLBAÀÇ ¹è¼öÀÇ ÁÖ¼Ò·Î ¿¬°áÀÌ ¹ß»ýÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é shmaddrÀº ¿¬°áÇÒ ¼ö ÀÖ´Â Á¤·ÄµÈ ÆäÀÌÁö ÁÖ¼Ò¿©¾ß ÇÑ´Ù. </para> <para> ¸¸ÀÏ <emphasis>SHM_RDONLY</emphasis>°¡ shmflg¿¡ ÁöÁ¤µÇ¾ú´Ù¸é, ¼¼±×¸ÕÆ®´Â ÀбâÀü¿ëÀÌ µÇ¸ç °øÀ¯¸Þ¸ð¸® ¿µ¿ª¿¡ Á¢±ÙÇϰíÀÚ ÇÏ´Â ÇÁ·Î¼¼½º´Â ÀбâÀü¿ëÇã°¡ Á¢±Ù±ÇÀ» °¡Á®¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ»°æ¿ì ¼¼±×¸ÕÆ®´Â Àбâ/¾²±â·Î ºÙ¿©Áö¸ç ÇÁ·Î¼¼½º´Â (¹Ýµå½Ã)Àбâ/¾²±â Çã°¡±ÇÀ» °¡Á®¾ßÇÑ´Ù. ¾²±âÀü¿ë °øÀ¯¸Þ¸ð¸® ¼¼±×¸ÕÆ®¸¦ À§ÇÑ Ç÷¡±×´Â ¾ø´Ù. </para> <para> ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¸é ¿¬°áµÈ ¼¼±×¸ÕÆ®´Â ÀÚµ¿ÀûÀ¸·Î ºÐ¸®µÈ´Ù. µ¿ÀÏÇÑ ¼¼±×¸ÕÆ®´Â Àбâ¿Í Àбâ/¾²±â·Î ÇѹøÀÌ»ó ¿¬°á½Ãų ¼ö ÀÖ´Ù. </para> <para> shmat°¡ ¼º°øÇÏ¸é ½Ã½ºÅÛÀº shmid_ds±¸Á¶Ã¼ÀÇ ¸â¹öµéÀ» ¾Æ·¡¿Í °°ÀÌ ¾÷µ¥ÀÌÆ® ½ÃŲ´Ù. <orderedlist> <listitem> <para> shm_atimeÀ» ÇöÀç ½Ã°£À¸·Î ¼öÁ¤ÇÑ´Ù. </para> </listitem> <listitem> <para> shm_lpid¸¦ ÇöÀç È£ÃâÇÑ ÇÁ·Î¼¼½ºÀÇ ID·Î ¼³Á¤ÇÑ´Ù. </para> </listitem> <listitem> <para> shm_nattch´Â 1 Áõ°¡ ½ÃŲ´Ù. </para> </listitem> </orderedlist> </para> <para> °øÀ¯¸Þ¸ð¸® ¼¼±×¸ÕÆ®°¡ »èÁ¦·Î Ç¥½ÃµÉ ¶§¿¡µµ ¸¶Âù°¡Áö·Î ºÐ¸®µÈ´Ù. </para> <para> shmdt()´Â °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ¸·Î ºÎÅÍ <emphasis>shmaddr</emphasis> Áּ ºÐ¸® ½Ã۱â À§Çؼ »ç¿ëÇÑ´Ù. °øÀ¯¸Þ¸ð¸® ¿µ¿ªÀÇ ºÐ¸®´Â shmat ½Ã½ºÅÛ ÄÝ·Î ¿¬°áµÈ °ª°ú µ¿ÀÏÇÑ <emphasis>shmaddr</emphasis>À» °¡Áö°í ÀÖ´Â ¿¬°áµÈ ¿µ¿ªµéÁß Çϳª¿©¾ß ÇÑ´Ù. </para> <para> shmdt()°¡ ¼º°øÀûÀ¸·Î È£ÃâµÇ¸é shmid_ds±¸Á¶Ã¼ÀÇ ¸â¹ö¸¦ ´ÙÀ½°ú °°ÀÌ º¯°æÇÑ´Ù. <orderedlist> <listitem> <para> shm_dtimeÀ» ÇöÀç ½Ã°£À¸·Î º¯°æÇÑ´Ù. </para> </listitem> <listitem> <para> shm_lpid¸¦ ÇöÀç È£ÃâÇÑ ÇÁ·Î¼¼½ºÀÇ ID·Î º¯°æÇÑ´Ù. </para> </listitem> <listitem> <para> shm_nattchÀ» 1 °¨¼Ò ½ÃŲ´Ù. ¸¸¾à °ªÀÌ 0ÀÌµÇ°í ¼¼±×¸ÕÆ®¿¡ »èÁ¦Ç¥½Ã°¡ µÇ¾î ÀÖ´Ù¸é ¼¼±×¸ÕÆ®´Â »èÁ¦µÈ´Ù. </para> </listitem> </orderedlist> È£Ãâ ÇÁ·Î¼¼½ºÀÇ À¯Àú°ø°£¿¡ Á¡À¯µÈ ¿µ¿ªÀº ´ëÀÀÀÌ Ç®¸®Áö ¾Ê´Â´Ù. </para> </section> <!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> <section> <title>¹Ýȯ°ª</title> <para> ¼º°øÇϸé 0À» ¹ÝȯÇÏ°í ½ÇÆÐÇϸé -1À» ¹ÝȯÇÑ´Ù. </para> </section> <!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> <section> <title>¿¡·¯</title> <para> <variablelist> <varlistentry> <term>EACCES</term> <listitem> <para> È£ÃâÇÑ ÇÁ·Î¼¼½º°¡ ºÙÀ̱⠿øÇÏ´Â ¿µ¿ª¿¡ ´ëÇØ¼ ±ÇÇÑÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>EINVAL</term> <listitem> <para> À߸øµÈ shmid °ª, ȤÀº À߸øµÈ shmaddr °ªÀ» °¡Áö°í ÀÖ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>ENOMEM</term> <listitem> <para> ¸Þ¸ð¸®ÇÒ´çÀ» ÇÒ ¼ö ¾ø´Ù. </para> </listitem> </varlistentry> </variablelist> </para> </section> <!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù --> <!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> <!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ ¿Ã·ÁÁּŵµ µË´Ï´Ù --> <!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê --> <!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼ ¿Ã¸®°Ú½À´Ï´Ù --> <!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä --> <section> <title>¿¹Á¦</title> <para> <screen> #include <sys/ipc.h> #include <sys/shm.h> #include <string.h> #include <unistd.h> int main() { int shmid; int pid; int *cal_num; void *shared_memory = (void *)0; // °øÀ¯¸Þ¸ð¸® °ø°£À» ¸¸µç´Ù. // Å©±â´Â 4byte·Î ÇÑ´Ù. shmid = shmget((key_t)1234, sizeof(int), 0666|IPC_CREAT); if (shmid == -1) { perror("shmget failed : "); exit(0); } // ÇÁ·Î¼¼½º ¸Þ¸ð¸®¸¦ °øÀ¯¸Þ¸ð¸®¿µ¿ª¿¡ ºÙÀδÙ. shared_memory = shmat(shmid, (void *)0, 0); if (shared_memory == (void *)-1) { perror("shmat failed : "); exit(0); } cal_num = (int *)shared_memory; pid = fork(); if (pid == 0) { shmid = shmget((key_t)1234, sizeof(int), 0); if (shmid == -1) { perror("shmget failed : "); exit(0); } shared_memory = shmat(shmid, (void *)0, 0666|IPC_CREAT); if (shared_memory == (void *)-1) { perror("shmat failed : "); exit(0); } cal_num = (int *)shared_memory; *cal_num = 1; while(1) { *cal_num = *cal_num + 1; printf("child %d\n", *cal_num); sleep(1); } } // ºÎ¸ð ÇÁ·Î¼¼½º·Î °øÀ¯¸Þ¸ð¸®ÀÇ ³»¿ëÀ» º¸¿©ÁØ´Ù. else if(pid > 0) { while(1) { sleep(1); printf("%d\n", *cal_num); } } } </screen> </para> </section> <section> <title>Âü°í¹®Çå</title> <para> <orderedlist> <listitem> <para> <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_°øÀ¯¸Þ¸ð¸®¿Í_¼¼¸¶Æ÷¾î¸¦_ÀÌ¿ëÇÑ_ÇÁ·Î¼¼½º°£_µ¥ÀÌÅÍó¸®">°øÀ¯ ¸Þ¸ð¸®¸¦ ÀÌ¿ëÇÑ ÇÁ·Î¼¼½º°£ µ¥ÀÌÅÍ ±³È¯</ulink> </para> </listitem> <listitem> <para> ftok(3) </para> </listitem> <listitem> <para> ipc(5) </para> </listitem> <listitem> <para> shmctl(2) </para> </listitem> <listitem> <para> shmat(2) </para> </listitem> <listitem> <para> shmdt(2) </para> </listitem> </orderedlist> </para> </section> </chapter> |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|