ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
Describe docbook_fcntl(2) here
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> <chapter lang=ko> <!-- ÀÛ¼ºÀÚ : yundream --> <!-- ÀÛ¼ºÀÏ : 2004/01/14 --> <!-- ¿¬¶ôó : yundream@joinc.co.kr --> <!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> <title>fcntl(2)</title> <!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> <para> ÆÄÀÏ ÁöÁ¤ÀÚÀÇ Á¶ÀÛ </para> <!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> <section> <title>»ç¿ë¹ý</title> <para> <screen> #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock * lock); </screen> </para> </section> <!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> <section> <title>¼³¸í</title> <para> fcntl()Àº ÀÎÀÚ·Î ÁÖ¾îÁø ÆÄÀÏ ±â¼úÀÚ<emphasis>fd</emphasis>¿¡ ´ëÇØ¼ ¿©·¯°¡Áö ¿¬»êÀ» ¼öÇàÇÑ´Ù. ¿¬»êÀÇ Á¾·ù´Â <emphasis>cmd</emphasis>¿¡ ÀÇÇØ¼ °áÁ¤µÈ´Ù. </para> <para> ´ÙÀ½Àº °¡´ÉÇÑ ¿¬»ê <emphasis>cmd</emphasis>ÀÇ Á¾·ù´Ù. <variablelist> <varlistentry> <term>F_DUPFD</term> <listitem> <para> dup(2)¿Í ¸Å¿ì ºñ½ÁÇѵ¥ ÆÄÀÏÀÌ º¹»çµÉ ¶§ <emphasis>arg</emphasis>º¸´Ù Å©°Å³ª µ¿ÀÏÇÑ °¡Àå ³·Àº ¼ýÀÚ¸¦ ÆÄÀÏ ÁöÁ¤¹øÈ£·Î Çϰí, ±×°ÍÀ» <emphasis>fd</emphasis>ÀÇ º¹»çº»ÀÌ µÇµµ·Ï ÇÑ´Ù. dup2(2)ÀÇ °æ¿ì ¾ö¹ÐÇÏ°Ô ÁöÁ¤µÈ ±â¼úÀÚ¸¦ »ç¿ëÇÑ´Ù. </para> <para> ¿À·¡µÈ ±×¸®°í »õ·Î¿î ±â¼úÀÚµéÀº ±³´ëÀûÀ¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù. À̵éÀº Àá±Ý(lock), ÆÄÀÏ À§Ä¡ Æ÷ÀÎÅÍ ±×¸®°í Ç÷¡±×¸¦ °øÀ¯ÇÑ´Ù. ¿¹¸¦ µé¸é ±â¼úÀÚÁß Çϳª¿¡¼ ÆÄÀÏ À§Ä¡°¡ lseek(2)¸¦ ÅëÇØ¼ º¯°æµÇ¾ú´Ù¸é ´Ù¸¥ °Íµµ º¯°æµÉ ¼ö ÀÖ´Ù. </para> <para> µÎ ±â¼úÀÚµéÀº close-on-exec Ç÷¡±×¸¦ °øÀ¯ÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª º¹Á¦º»ÀÇ close-on-exec Ç÷¡±×´Â ±âº»ÀûÀ¸·Î off »óŰ¡ µÈ´Ù. </para> <para> ¼º°øÇÏ¸é »õ·Î¿î ±â¼úÀÚ°¡ ¸®ÅϵȴÙ. </para> </listitem> </varlistentry> <varlistentry> <term>F_GETFD</term> <listitem> <para> close-on-exec¸¦ Àд´Ù. ¸¸ÀÏ <emphasis>FD_CLOEXEC</emphasis>ºñÆ®°¡ 0À̸é, ÆÄÀÏÀº exec¸¦ ÅëÇØ ¿¸° »óÅ·Π³²°ÜÁö°í ±×·¸Áö ¾ÊÀ¸¸é ´ÝÈù´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>F_SETFD</term> <listitem> <para> close-on-exec Ç÷¡±×¸¦ <emphasis>arg</emphasis>ÀÇ FD_CLOEXECºñÆ®¿¡ ÀÇÇØ ÁöÁ¤µÈ °ªÀ¸·Î ¼³Á¤ÇÑ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>F_GETFL</term> <listitem> <para> ÆÄÀÏ ÁöÁ¤ÀÚÀÇ Ç÷¡±×¸¦ Àд´Ù. open(2)ÀÇ ÀÇÇØ ¼³Á¤µÈ ¸ðµç Ç÷¡±×µéµµ ¸®ÅϵȴÙ. </para> </listitem> </varlistentry> <varlistentry> <term>F_SETFL</term> <listitem> <para> <emphasis>arg</emphasis>¿¡ ÀÇÇØ ÁöÁ¤µÈ °ªÀ» ÆÄÀÏ ÁöÁ¤ÀÚÀÇ Ç÷¡±×·Î ¼³Á¤ÇÑ´Ù. ´ÜÁö <emphasis>O_APPEND</emphasis>,<emphasis>O_NONBLOCK</emphasis> <emphasis>O_ASYNC</emphasis>¸¸ÀÌ ¼³Á¤¿¡ »ç¿ëµÉ ¼ö ÀÖ´Ù. ´Ù¸¥ Ç÷¡±×µéÀº ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù. </para> <para> Ç÷¡±×µéÀº dup(2), fork(2)·Î ¸¸µé¾îÁø ÆÄÀÏ ±â¼úÀÚÀÇ º¹»çº»µé »çÀÌ¿¡ °øÀ¯µÈ´Ù. </para> <para> Ç÷¡±×ÀÇ ÀÚ¼¼ÇÑ ¼³¸íÀº open(2)¸¦ Âü°íÇϱ⠹ٶõ´Ù. </para> </listitem> </varlistentry> </variablelist> </para> <para> F_GETLK, F_SETLK, F_SETLKW µéÀº ÆÄÀÏÀÇ (±Ç°í)Àá±ÝÀ» °ü¸®Çϱâ À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëµÈ´Ù. ¼¼¹øÂ° ÀÎÀÚ <emphasis>lock</emphasis>´Â ±¸Á¶Ã¼ flock¿¡ ´ëÇÑ Æ÷ÀÎÅÍ´Ù. Àá±ÝÀº ·¹ÄÚµå´ÜÀ§·Î ÀÌ·ç¾îÁú ¼ö ÀÖ´Ù. flock±¸Á¶Ã¼´Â ´ÙÀ½°ú °°´Ù. <screen> struct flock { ... short l_type; /* Type of lock: F_RDLCK, F_WRLCK, F_UNLCK */ short l_whence; /* How to interpret l_start: SEEK_SET, SEEK_CUR, SEEK_END */ off_t l_start; /* Starting offset for lock */ off_t l_len; /* Number of bytes to lock */ pid_t l_pid; /* PID of process blocking our lock (F_GETLK only) */ ... }; </screen> <emphasis>l_whence</emphasis>, <emphasis>l_start</emphasis>, <emphasis>l_len</emphasis> Çʵå´Â ÆÄÀÏ¿¡¼ Àá±Û ·¹ÄÚµåÀÇ ¹üÀ§¸¦ ÁöÁ¤Çϱâ À§Çؼ »ç¿ëµÈ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº <ulink url=http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_fcntlÀ»_ÀÌ¿ëÇÑ_ÆÄÀÏ_·¹ÄÚµåÀá±Ý>fcntlÀ» ÀÌ¿ëÇÑ ÆÄÀÏ ·¹ÄÚµå Àá±Ý</ulink>À» Âü°íÇϱ⠹ٶõ´Ù. <variablelist> <varlistentry> <term>F_GETLK</term> <listitem> <para> Àá±ÝÀÌ ÀÖ´Â Áö¸¦ ¾Ë¾Æ³½´Ù. Àá±ÝÀÌ ÀÖ´Ù¸é flock±¸Á¶Ã¼¸¦ ¸®ÅÏÇϰí Àá±ÝÀ» ¾òÀ» ¼ö ÀÖ´Ù¸é Àá±ÝÀÇ <emphasis>l_type</emphasis>Çʵ带 F_UNLCK À¸·Î ¼³Á¤ÇÑ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>F_SETLK</term> <listitem> <para> <emphasis>l_type</emphasis>ÀÌ F_RDLCK ³ª F_WRLCK ÀÏ °æ¿ì »ç¿ë°¡´ÉÇϸç Àá±ÝÀ» ¿äûÇϱâ À§Çؼ »ç¿ëÇÑ´Ù. ¸¸¾à ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ÀÌ¹Ì Àá±ÝÀ» »ç¿ëÇϰí ÀÖ´Ù¸é -1À» ¸®ÅÏÇÑ´Ù. <emphasis>errno</emphasis>´Â EACCES ³ª EAGAIN ÀÌ ¼³Á¤µÈ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>F_SETLKW</term> <listitem> <para> F_SETLK ¿Í ¸¶Âù°¡Áö·Î Àá±ÝÀ» ¿äûÇϱâ À§Çؼ »ç¿ëÇÑ´Ù. ±×·¯´Ù ´Ù¸¥ ÇÁ·Î¼¼½º°¡ Àá±ÝÀ» °¡Áö°í ÀÖ´õ¶óµµ ¿¡·¯¸¦ ¸®ÅÏÇÏÁö´Â ¾Ê°í ¾òÀ» ¼ö ÀÖÀ» ¶§±îÁö ±â´Ù¸°´Ù. ±â´Ù¸®´Â Áß¿¡ ½Ã±×³Î°ú °°Àº ÀÎÅÍ·´Æ®(interrupted)°¡ ¹ß»ýÇϸé Áï½Ã ¸®ÅÏÇÑ´Ù. À̰æ¿ì -1ÀÌ ¸®Åϵǰí <emphasis>errno</emphasis>·Î EINTRÀÌ ¼³Á¤µÈ´Ù. </para> </listitem> </varlistentry> </variablelist> </para> <para> fcntl()Àº ¶ÇÇÑ ½Ã±×³Î °ü¸®¸¦ À§Çؼ F_GETOWN, F_SETOWN, F_GETSIG, F_SETSIG¸¦ Á¦°øÇÑ´Ù. ÀÌµé ¸í·ÉÀ» ÀÌ¿ëÇØ¼ ÀÔÃâ·Â°ú °ü·ÃµÈ ½Ã±×³ÎÀ» Á¦¾îÇÒ ¼ö ÀÖ´Ù. <variablelist> <varlistentry> <term>F_GETOWN/term> <listitem> <para> ÆÄÀÏ ÁöÁ¤ÀÚ<emphasis>fd</emphasis>¿¡¼ ¹ß»ýÇÏ´Â SIGIO¿Í SIGURG ½Ã±×³ÎÀ» ¹ÞÀ» ÇÁ·Î¼¼½ºÀÇ ID³ª ±×·ì ID¸¦ ¾ò¾î¿Â´Ù. ÇÁ·Î¼¼½º ±×·ìÀÏ °æ¿ì 0º¸´Ù ÀÛÀº ¼ö°¡ ¸®ÅϵȴÙ. </para> </listitem> </varlistentry> <varlistentry> <term>F_SETOWN/term> <listitem> <para> ÆÄÀÏ ÁöÁ¤ÀÚ<emphasis>fd</emphasis>¿¡¼ ¹ß»ýÇÏ´Â À̺¥Æ®ÀÎ SIGIO¿Í SIGURG¸¦ ¹ÞÀ» ÇÁ·Î¼¼½º ID³ª ±×·ì ID¸¦ ÁöÁ¤ÇÑ´Ù. ÇÁ·Î¼¼½º ±×·ìÀ¸·Î ÁöÁ¤ÇÏ±æ ¿øÇÑ´Ù¸é 0º¸´Ù ÀÛÀº ¼ö¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. </para> <para> ¸¸¾à ÆÄÀÏÁöÁ¤ÀÚ¿¡ O_ASYNC Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖ´Ù¸é (open(2)½Ã ÁöÁ¤Çϰųª fcntl()À» ÅëÇØ ÁöÁ¤°¡´É ÇÏ´Ù.) ÆÄÀÏ ÁöÁ¤ÀÚ¿¡ ÀÔÃâ·Â À̺¥Æ®°¡ ÀÖÀ» ¶§ SIGIO°¡ ¹ß»ýÇÑ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>F_GETSIG/term> <listitem> <para> ÀÔÃâ·Â À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ ½Ã±×³ÎÀ» Á¤¼ÛÇϵµ·Ï ÇÑ´Ù. 0Àº SIGIO°¡ Àü¼ÛµÊÀ» ÀǹÌÇÑ´Ù. ´Ù¸¥ °ªÀÌ µé¾î°£´Ù¸é ´Ù¸¥ ½Ã±×³ÎÀÌ Àü¼ÛµÉ °ÍÀÌ´Ù. ÀÌ·± °æ¿ì SA_SIGINFO°¡ ½Ã±×³Î Çڵ鷯¿¡ ¼³Á¤µÇ¾î ÀÖ´Ù¸é Ãß°¡ÀûÀÎ Á¤º¸¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>F_SETSIG/term> <listitem> <para> ÀÔÃâ·Â À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ ½Ã±×³ÎÀ» Á¤¼ÛÇϵµ·Ï ÇÑ´Ù. 0Àº SIGIO°¡ Àü¼ÛµÊÀ» ÀǹÌÇÑ´Ù. (SIGIO¸¦ Æ÷ÇÔÇÑ) ´Ù¸¥ °ªÀÌ ¼³Á¤µÇ¾ú´Ù¸é ÇØ´ç ½Ã±×³ÎÀÌ Àü¼ÛµÈ´Ù. SA_SIGINFO°¡ ½Ã±×³Î Çڵ鷯¿¡ ¼³Á¤µÇ¾î ÀÖ´Ù¸é Ãß°¡ÀûÀÎ Á¤º¸¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. </para> <para> F_SETSIG°¡ 0ÀÌ ¾Æ´Ñ °ªÀ¸·Î ¼³Á¤µÇ°í SA_SIGINFO°¡ ½Ã±×³Î Çڵ鷯¿¡ Àû¿ëµÇ¾î ÀÖ´Ù¸é(sigaction(2)Âü°í) ÀÔÃâ·Â¿¡ ´ëÇÑ ºÎ°¡ÀûÀÎ Á¤º¸¸¦ <emphasis>siginfo_t</emphasis>±¸Á¶Ã¼¸¦ ÅëÇØ¼ ¹Þ¾Æ º¼ ¼ö ÀÖ´Ù. ´ÙÀ½Àº siginfo_t ±¸Á¶Ã¼ÀÇ ±¸Á¶´Ù. <screen> typedef struct siginfo { int si_signo; /* Signal number */ int si_errno; /* Error code */ int si_code; pid_t si_pid; uid_t si_uid; void *si_addr; union sigval si_value; union { /* Skipping other fields */ struct { int _band; /* Socket event flags (similar to poll) */ int _fd; /* Socket fd where event occurred */ } _sigpoll; } _sifields; } siginfo_t; </screen> </para> <para> POSIX.1b Real Time Signal (value°¡ SIGRTMINº¸´Ù Ŭ°æ¿ì)ÀÌ ¼±ÅõǾú´Ù¸é, ´ÙÁßÀÇ ÀÔÃâ·Â À̺¥Æ®¸¦ Å¥(queue)¿¡ ´ã¾Æ¼ °ü¸®ÇÒ ¼ö ÀÖ´Ù. RTS¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº <xref linkend="refer">¸¦ Âü°íÇϱ⠹ٶõ´Ù. </para> </listitem> </varlistentry> </variablelist> </para> <para> ¿©±â¿¡¼ Á¦°øÇÏ´Â ¸í·ÉµéÀ» ÀÌ¿ëÇϸé select(2)³ª poll(2)ÀÇ »ç¿ë¾øÀÌ ºñµ¿±âÀûÀ¸·Î ÀÔÃâ·ÂÀ» ´Ù·ê ¼ö ÀÖ´Ù. </para> <para> O_ASYNC, F_GETOWN, F_SETOWN Àº BSD¿Í Linux¿¡¼¶ »ç¿ë°¡´ÉÇÏ´Ù. F_GETSIG¿Í F_SETSIG´Â ¸®´ª½º¿¡¼¸¸ »ç¿ë°¡´ÉÇÏ´Ù. POSIX´Â asynchronous I/O¿Í <emphasis>aio_sigevent</emphasis> ±¸Á¶Ã¼¸¦ ÀÌ¿ëÇØ¼ fcntl(2)°ú ºñ½ÁÇÑ ±¸ÇöÀ» ¸¸µé ¼ö ÀÖ´Ù. ÃÖ±Ùµé¾î ¸®´ª½ºµµ À̵éÀ» Áö¿øÇÏ°Ô µÇ¾ú´Ù. </para> </section> <!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> <section> <title>¹Ýȯ°ª</title> <para> </para> </section> <!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> <section> <title>¿¡·¯</title> <para> ¿¡·¯°¡ ¹ß»ýÇϸé (struct utmp *)0 À» µÇµ¹·ÁÁØ´Ù. </para> </section> <!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù --> <!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> <!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ ¿Ã·ÁÁּŵµ µË´Ï´Ù --> <!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê --> <!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼ ¿Ã¸®°Ú½À´Ï´Ù --> <!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä --> <section> <title>¿¹Á¦</title> <para> </para> </section> <!-- °¢Á¾ Âü°í¹®Çå --> <section id="refer"> <title>Âü°í¹®Çå</title> <para> </para> </section> </chapter> |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|