ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>setrlimit(2)
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> <chapter lang=ko> <!-- ÀÛ¼ºÀÚ : yundream --> <!-- ÀÛ¼ºÀÏ : 2004/04/16 --> <!-- ¿¬¶ôó : yundream@joinc.co.kr --> <!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> <title>getrlimit(2)</title> <!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> <para> ÀÚ¿ø(resource)ÀÇ °ªÀ» ¾ò¾î¿À°í, °ªÀ» ¼³Á¤ÇÑ´Ù. </para> <!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> <section> <title>»ç¿ë¹ý</title> <para> <screen> #include <sys/types.h> #include <sys/resource.h> #include <unistd.h> int getrlimit(int resource, struct rlimit *rlim); int getrusage(int who, struct rusage *usage); int setrlimit(int resource, const struct rlimit *rlim); </screen> </para> </section> <!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> <section> <title>¼³¸í</title> <para> getrlimit()¿Í setrlimit()´Â ÀÚ¿øÀÇ Á¦ÇѰªÀ» ¾Ë¾Æ³»°Å³ª ¼³Á¤Çϱâ À§Çؼ »ç¿ëÇÑ´Ù. À̶§ ÀÚ¿øÀÇ Á¾·ù´Â <emphasis>resource</emphasis>¸¦ ÀÌ¿ëÇØ¼ ÁöÁ¤°¡´ÉÇÏ´Ù. resource´Â ´ÙÀ½Áß ÇϳªÀÌ´Ù. ¸®¼Ò½ºÀÇ Å©±â´Â <emphasis>rlim</emphasis>¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. rlim±¸Á¶Ã¼´Â ´ÙÀ½ÀÇ ¸â¹öµéÀ» °¡Áø´Ù. <screen> struct rlimit { rlim_t rlim_cur; /* soft limit */ rlim_t rlim_max; /* Hard limit */ }; </screen> ¼ÒÇÁÆ® ¸®¹ÌÆ®(soft limit)´Â º¯°æÇϰíÀÚ ÇÏ´Â °ªÀ» Ä¿³Î¿¡ ¿äûÇÑ´Ù. ÇÏµå ¸®¹ÌÆ®(hard limit)´Â ÀÚ¿øÀÇ ¼³Á¤°¡´ÉÇÑ ÃÖ´ë °ªÀ¸·Î rlim_curÀº ÇÏµå ¸®¹ÌÆ®ÀÇ Á¦ÇÑÀ» ¹Þ°Ô µÈ´Ù. </para> <para> ´ÙÀ½Àº ¼±Åð¡´ÉÇÑ resourceÀÇ Á¾·ùµéÀÌ´Ù. <screen> RLIMIT_CPU /* ÃÊ ´ÜÀ§ÀÇ CPU ½Ã°£ */ RLIMIT_FSIZE /* ÃÖ´ë ÆÄÀÏ Å©±â */ RLIMIT_DATA /* ÃÖ´ë µ¥ÀÌŸ Å©±â */ RLIMIT_STACK /* ÃÖ´ë ½ºÅà ũ±â */ RLIMIT_CORE /* ÃÖ´ë ÄÚ¾î ÆÄÀÏ Å©±â */ RLIMIT_RSS /* ÃÖ´ë °ÅÁÖ ÁýÇÕ Å©±â */ RLIMIT_NPROC /* ÃÖ´ë ÇÁ·Î¼¼½º ¼ö */ RLIMIT_NOFILE /* ÃÖ´ë ¿ ¼ö ÀÖ´Â ÆÄÀÏÀÇ ¼ö */ RLIMIT_MEMLOCK /* ÃÖ´ë Àá±ä ±â¾ï Àå¼Ò ÁÖ¼Ò °ø°£ */ RLIMIT_AS /* ÁÖ¼Ò °ø°£(°¡»ó ¸Þ¸ð¸®) Á¦ÇѰª */ </screen> </para> <para> getrusage()´Â ÇöÀç »ç¿ëÁßÀÎ resource Á¤º¸¸¦ µÇµ¹·ÁÁØ´Ù. <emphasis>who</emphasis>´Â RUSAGE_SELF ¿Í RUSAGE_CHILDREN µÑ Áß Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀüÀÚ´Â ÇöÀç ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ¸®¼Ò½ºÀÇ Á¤¸¦º¸ µÇµ¹·ÁÁÖ°í ÈÄÀÚ´Â ÇöÀç ÇÁ·Î¼¼½º¿Í ±× ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀÌ »ç¿ëÇÏ´Â ¸ðµç ¸®¼Ò½ºÀÇ Á¤º¸¸¦ µÇµ¹·ÁÁØ´Ù(Á¾·áµÇ¾î¼ ±â´Ù¸®´Â ÀÚ½Ä ÇÁ·Î¼¼½ºµµ Æ÷ÇԵȴÙ.) ÀÌµé ¸®¼Ò½º Á¤º¸´Â <emphasis>rusage</emphasis>¿¡ ÀúÀåµÈ´Ù. <screen> struct rusage { struct timeval ru_utime; /* user time used */ struct timeval ru_stime; /* system time used */ long ru_maxrss; /* maximum resident set size */ long ru_ixrss; /* integral shared memory size */ long ru_idrss; /* integral unshared data size */ long ru_isrss; /* integral unshared stack size */ long ru_minflt; /* page reclaims */ long ru_majflt; /* page faults */ long ru_nswap; /* swaps */ long ru_inblock; /* block input operations */ long ru_oublock; /* block output operations */ long ru_msgsnd; /* messages sent */ long ru_msgrcv; /* messages received */ long ru_nsignals; /* signals received */ long ru_nvcsw; /* voluntary context switches */ long ru_nivcsw; /* involuntary context switches */ }; </screen> </para> </section> <!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> <section> <title>¹Ýȯ°ª</title> <para> ¼º°øÇÒ°æ¿ì 0À» ½ÇÆÐÇßÀ»°æ¿ì¿¡´Â -1À» ¹ÝȯÇϸç, Àû´çÇÑ errno °ªÀ» ¼³Á¤ÇÑ´Ù. </para> </section> <!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> <section> <title>¿¡·¯</title> <para> <variablelist> <varlistentry> <term>EFAULT</term> <listitem> <para> <emphasis>rlim</emphasis> ȤÀº <emphasis>usage</emphasis>ÀÌ À߸øµÈ ÁÖ¼Ò¸¦ °¡¸®Å°°í ÀÖ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>EINVAL</term> <listitem> <para> getrlimit()³ª setrlimit()¿¡¼ À߸øµÈ <emphasis>resource</emphasis>³ª <emphasis>who</emphasis>°ªÀ» »ç¿ëÇßÀ» °æ¿ì </para> </listitem> </varlistentry> <varlistentry> <term>EPERM</term> <listitem> <para> ½´ÆÛÀ¯Àú°¡ ¾Æ´Ñ »ç¿ëÀÚ°¡ setrlimit()¸¦ ÀÌ¿ëÇØ¼ ÇöÀç Çϵ帮¹ÌÆ® °ªÀ» ÃʰúÇØ¼ ¼ÒÇÁÆ® ¸®¹ÌÆ® °ªÀ̳ª ÇÏµå ¸®¹ÌÆ® °ªÀ» Àû¿ë½Ãų·Á°í ÇÒ°æ¿ì </para> </listitem> </varlistentry> </variablelist> </para> </section> <section> <title>¿¹Á¦</title> <para> <screen> #include <sys/time.h> #include <sys/resource.h> #include <unistd.h> #include <stdio.h> int main() { struct rlimit rlim; // »ý¼º°¡´ÉÇÑ ÇÁ·Î¼¼½ºÀÇ °¹¼ö¸¦ Ãâ·ÂÇÑ´Ù. (ÇöÀç : ÃÖ´ë) getrlimit(RLIMIT_NPROC, &rlim); printf("PROC MAX : %lu : %lu\n", rlim.rlim_cur, rlim.rlim_max); // ¿Àǰ¡´ÉÇÑ ÆÄÀÏÀÇ °¹¼ö¸¦ Ãâ·ÂÇÑ´Ù. getrlimit(RLIMIT_NOFILE, &rlim); printf("FILE MAX : %lu : %lu\n", rlim.rlim_cur, rlim.rlim_max); // »ç¿ë°¡´ÉÇÑ CPUÀÚ¿øÀ» Ãâ·ÂÇÑ´Ù. getrlimit(RLIMIT_CPU, &rlim); // ¸¸¾à ¹«ÇÑ´ë·Î »ç¿ë°¡´ÉÇÏ´Ù¸é UNLIMIT¸¦ Ãâ·ÂÇϵµ·ÏÇÑ´Ù. // CPUÀÚ¿øÀº ÃÖ´ëÇÑ »ç¿ë°¡´ÉÇϵµ·Ï µÇ¾îÀÖÀ½À¸·Î UNLIMIT¸¦ Ãâ·ÂÇÒ°ÍÀÌ´Ù. if(rlim.rlim_cur == RLIM_INFINITY) { printf("UNLIMIT\n"); } } </screen> </para> </section> </chapter> |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|