setrlimit
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>setrlimit(2)



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À» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.