[ 1Àå, 2Àå, 3Àå, 4Àå, 5Àå, 6Àå, 7Àå, 8Àå, 9Àå, 10Àå, 11Àå, 12Àå, 13Àå, 14Àå, 15Àå, 16Àå, 17Àå, 18Àå, 19Àå, 20Àå, 21Àå, 22Àå, 23Àå, 24Àå, 25Àå, 26Àå, 27Àå, ºÎ·ÏA, ºÎ·ÏB,C, ºÎ·ÏD, GNU C ¶óÀ̺귯¸® ¸ñ·Ï ]

À̱ÛÀº ÇÏÀÌÅÚ ¼ÒÇÁÆ®¿þ¾îµ¿È£È¸ÀÇ ¼Ò¸ðÀÓÀÎ Á÷ÀåÀÎÀ» À§ÇÑ ¾¾¸ðÀÓ¿¡¼­ ÀåÀå 2³â°£ÀÇ ´ëÀåÁ¤À¸·Î ¹ø¿ªµÇ¾îÁø ¹®¼­ÀÔ´Ï´Ù. Áö±ÝÀº Á÷¾¾ÀåÀ» Áö³»°í ÀÖ´Â ±è¼Ò¿µ(flpigy)´Ô°ú Á¶¿øºÀ(thirnine)´Ô, °í¼®°©´Ô(sukgab)ÀÇ °øµ¿¹ø¿ªÀÔ´Ï´Ù.

17 ³¯Â¥¿Í ½Ã°£.

ÀÌ ÀýÀº ÇöÀçÀÇ ½Ã°£°ú, ´Ù¸£°Ô ½Ã°£À» Ç¥ÇöÇÏ´Â ¹æ¹ýµé »çÀÌÀÇ ÀüȯÀ» °áÁ¤ÇÏ´Â ÇÔ¼öµéÀ» Æ÷ÇÔÇÏ¿©, ³¯Â¥¿Í ½Ã°£µéÀ» À§ÇÑ ÇÔ¼öµéÀ» ¼³¸íÇϰí ÀÖ´Ù. ½Ã°£ ÇÔ¼öµéÀº ¼¼°¡Áö ÁÖ¿äÇÑ ¹üÁÖ·Î ³ª´µ¾îÁø´Ù.

o °æ°úµÈ CPU ½Ã°£À» °è»êÇÏ´Â ÇÔ¼öµéÀº 17.1Àý [Processor Time], 233 ÆäÀÌÁö¿¡¼­ ³íÀǵǾú´Ù.

o Àý´ë ½Ã°¢À̳ª ´Þ·Â ½Ã°£À» °è»êÇÏ´Â ÇÔ¼öµéÀº 17.2Àý [Calendar Time]235 ÆäÀÌÁö ¿¡¼­ ³íÀǵǾú´Ù.

o ¾Ë¶÷°ú ŸÀ̸Ӹ¦ ¼³Á¤ÇÏ´Â ÇÔ¼öµéÀº 17.3Àý [Setting an Alarm] 243ÆäÀÌÁö¿¡¼­ ³í ÀǵǾú´Ù.

17.1 ÇÁ·Î¼¼¼­ ŸÀÓ.

¸¸ÀÏ ´ç½ÅÀÌ ´ç½ÅÀÇ ÇÁ·Î±×·¥À» ÃÖÀûÈ­Çϰųª, ¶Ç´Â ±× È¿À²¼ºÀ» °è»êÇÏ·ÁÇÑ´Ù¸é, ¾î´À ÁÖ¾îÁø ÁöÁ¡

ÀÌÈÄ¿¡, ¾ó¸¶³ª ¸¹Àº ÇÁ·Î¼¼¼­ ½Ã°£°ú CPU ½Ã°£ÀÌ Èê·¶´ÂÁö¸¦ ¾Ë¼öÀÖµµ·Ï ÇÏ´Â À¯¿ëÇÑ ¹æ¹ýÀÌ ÀÖ

´Ù. ÇÁ·Î¼¼¼­ ½Ã°£Àº º®½Ã°è¿Í´Â ´Ù¸¥µ¥, ±×°ÍÀº º®½Ã°è°¡ ÀÔ/Ãâ·ÂÀ̳ª ´Ù¸¥ ¾î¶² ÇÁ·Î¼¼½º°¡ µ¿ÀÛ

Çϰí ÀÖ´Â µ¿¾È ¾ó¸¶³ª ½Ã°£ÀÌ Èê·¶´ÂÁö¸¦ ¾Ë¸®Áö ¾Ê±â ¶§¹®ÀÌ´Ù. ÇÁ·Î¼¼¼­ ½Ã°£Àº µ¥ÀÌÅÍ Å¸ÀÔ

clock_t·Î Ç¥ÇöµÇ°í, ´ÜÀÏÇÑ ÇÁ·Î±×·¥ÀÇ ½ÃÀÛÁ¡¿¡¼­ Ç¥½ÃµÈ ¾î¶² ±âÁØ ½Ã°£°ú ¿¬°üµÈ ½Ã°£ÀÇ È帧À»

¼ýÀڷΠǥÇöÇÑ´Ù.

17.1.1 ±âÁØ CPU ½Ã°£ Á¶»ç.

ÇÁ·Î¼¼½º¿¡ ÀÇÇØ »ç¿ëµÈ, °æ°úµÈ CPU ½Ã°£À» ¾ò±â À§Çؼ­´Â, ´ç½ÅÀº clockÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÀÌ ÇÔ¼ö´Â Çì´õÆÄÀÏ 'time.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

Ưº°ÇÑ »ç¿ë¿¹·Î, ´ç½ÅÀÌ ½ÃÀÛÁ¡°ú ³¡Á¡ »çÀÌÀÇ ½Ã°£ÀÇ °£°ÝÀ» ±¸ÇÒ·Á¸é,clockÇÔ¼ö¸¦ È£ÃâÇϰí, ±×

°ªµéÀ» ³ªÁß°ª¿¡¼­ óÀ½°ªÀ» »©°í, ±×¸®°í CLOCKS_PER_SEC·Î ³ª´©¾î¶ó( ÃÊ´ç Ƚ¼ö(clock ticks)

ÀÇ ¼ýÀÚ¸¦ ¾ò±â À§Çؼ­ ), ´ÙÀ½ ÇÁ·Î±×·¥Ã³·³.

#include <time.h>

clock_t start, end;

double elapsed;

start = clock();

. . .

/* ¸ÕÀú ÀÏÀ» ½ÃÀÛÇϱâ Àü¿¡ clockÇÔ¼ö¸¦ È£ÃâÇÑ ´ÙÀ½ ´ç½ÅÀÌ °æ°úµÈ ½Ã°£À» ¾ò±â ¿øÇÏ´Â ±× ÀÏÀ»

½ÃÀÛÇ϶ó */

end = clock();

elapsed = ((double) (end - start)) / CLOCKS_PER_SEC;

´Ù¸¥ ÄÄÇ»ÅÍ¿Í ¿î¿µÃ¼Á¦¿¡¼­ ¾î¶»°Ô ÇÁ·Î¼¼¼­ ½Ã°£À» ±â¾ïÇÏ´ÂÁö´Â ¸Å¿ì ±¤¹ýÀ§ÇÑ ¹®Á¦ÀÌ´Ù. 100

ºÐÀÇ 1Ãʳª, 100¸¸ºÐÀÇ 1ÃÊ »çÀÌÀÇ ³»ºÎÇÁ·Î¼¼½º ½Ã°è¸¦ °®´Â °ÍÀÌ º¸ÅëÀÌ´Ù.

GNU ½Ã½ºÅÜ¿¡¼­ clock_t´Â long int ¿Í µ¿µîÇϰí, CLOCKS_PER_SEC´Â Á¤¼ö °ªÀÌ´Ù. ±×·¯³ª ´Ù

¸¥ ½Ã½ºÅÛ¿¡¼­´Â, clock_t´Â Á¤¼öÀ̰í, ¸ÅÅ©·Î CLOCKS_PER_SEC´Â ÇÃ·ÎÆÃ-Æ÷ÀÎÆ® ÇüÀ¸·Î ¼­·Î ´Ù

¸£´Ù. ¾î¶² ½Ã½ºÅÛÇÏ¿¡ ³õ¿©ÀÖµçÁö »ó°ü¾øÀÌ Àû´çÇÏ°Ô ÀÛ¾÷À» ¼öÇàÇϰí, »ê¼úÀûÀ¸·Î ±× ¸í·ÉÀ» È®ÀÎ

Çϱâ À§Çؼ­´Â ¾Æ·¡ÀÇ ¿¹Ã³·³ doubleÇüÀ¸·Î ÇÁ·Î¼¼½º ŸÀÓÀ» cast¿¬»êÀ» ÅëÇØ¼­ Çüº¯È¯À» Ç϶ó.

¸ÅÅ©·Î : int CLOCKS__PER__SEC

ÀÌ ¸ÅÅ©·Î´Â clock ÇÔ¼ö¿¡ ÀÇÇØ °è»êµÈ ÃÊ´ç ½Ã°£ÁÖ±â(clock ticks)ÀÇ ¼ö¸¦ ³ªÅ¸³»´Â °ªÀÌ´Ù.

¸ÅÅ©·Î : int CLK__TCK

À̰ÍÀº ¿¿³¯¿¡ CLOCKS_PER_SEC ´ë½Å¿¡ ¾²ÀÌ´ø °ÍÀÌ´Ù.

µ¥ÀÌÅÍŸÀÔ : clock__t

À̰ÍÀº clockÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ °ªÀÇ ÇüÀ¸·Î ½Ã°£ÁÖ±âÀÇ ´ÜÀ§ÀÌ´Ù.

ÇÔ¼ö : clock_t clock(void)

ÀÌ ÇÔ¼ö´Â °æ°úµÈ ÇÁ·Î¼¼¼­ ½Ã°£À» ¸®ÅÏÇÑ´Ù. ±âÁØ ½Ã°£Àº Ç×»ó ´Ù¸£Áö¸¸, ´ÜÀÏ ÇÁ·Î¼¼½º ¾È¿¡¼­´Â

º¯°æµÇÁö ¾Ê´Â´Ù. ¸¸ÀÏ ±× ÇÁ·Î¼¼¼­ ½Ã°£ÀÌ À¯¿ëÇÏÁö ¾Ê°Å³ª Ç¥ÇöµÉ ¼ö ¾ø´Ù¸é, clock´Â

(clock_t)(-1)ÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù.

17.1.2 ÀÚ¼¼ÇÏ°Ô °æ°úµÈ CPU ½Ã°£¿¡ ´ëÇÑ Á¶»ç.

times ÇÔ¼ö´Â °æ°úµÈ ÇÁ·Î¼¼¼­ ½Ã°£¿¡ ´ëÇØ¼­ struct tms¿ÀºêÁ§Æ®·Î ´õ »ó¼¼ÇÑ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.

ÀÌ ÇÔ¼ö´Â Çì´õÆÄÀÏ `sys'times.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔ : struct tms

tms±¸Á¶Ã¼´Â ÇÁ·Î¼¼½º ½Ã°£µé¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇϴµ¥ »ç¿ëµÈ´Ù. ±×°ÍÀº Àû¾îµµ ´ÙÀ½°ú °°Àº ¸â¹ö

µéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù.

clock_t tms_utime

À̰ÍÀº È£ÃâµÈ ÇÁ·Î¼¼½ºÀÇ ¸í·ÉµéÀ» ¼öÇàÇϴµ¥ »ç¿ëµÈ CPU ½Ã°£ÀÌ´Ù.

clock_t tms_stime

À̰ÍÀº È£ÃâµÈ ÇÁ·Î¼¼½º ¶§¹®¿¡ ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÈ CPU ½Ã°£ÀÌ´Ù.

clock_t tms_cutime

À̰ÍÀº wait ¶Ç´Â, waitpid¿¡ ÀÇÇØ ºÎ¸ð ÇÁ·Î¼¼½º¿¡°Ô º¸°íµÈ »óȲÀ¸·Î, È£ÃâµÈ ÇÁ·Î¼¼½ºÀÇ ¸ðµç

Á¾·áµÈ ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀÇ tms_utime °ú tms_cutimeÀÇ °ªµéÀ» ÇÕÇÑ °ªÀÌ´Ù; 23.6Àý [Process

Completion] 329 ÆäÀÌÁö ÂüÁ¶. Áï, È£ÃâÇÑ ÇÁ·Î¼¼½ºÀÇ ¸ðµç Á¾·áµÈ ÀÚ½Ä ÇÁ·Î¼¼½º ÀÇ ¸í·ÉÀ» ¼öÇàÇÏ

´Âµ¥ »ç¿ëµÈ ÃÑ CPU ½Ã°£À» ³ªÅ¸³½´Ù.

clock_t tms_cstime

À̰ÍÀº tms_cutime°ú À¯»çÇÏÁö¸¸, È£ÃâµÈ ÇÁ·Î¼¼½ºÀÇ ¸ðµç Á¾·áµÈ ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀ» À§ÇÏ¿© ½Ã½ºÅÛ

¿¡¼­ »ç¿ëµÈ ÃÑ CPU ½Ã°£À» ³ªÅ¸³½´Ù.

¸ðµç ½Ã°£µéÀº ½Ã°£ÁÖ±â(clock ticks)·Î ÁÖ¾îÁø´Ù. À̵éÀº Àý´ë°ªÀÌ´Ù; »õ·ÎÀÌ ¸¸µé¾îÁø ÇÁ·Î¼¼½º¿¡

¼­, ±×µéÀº ¸ðµÎ 0ÀÌ´Ù. 23.4 [Creatina a Precess] 326 ÆäÀÌÁö ÂüÁ¶.

ÇÔ¼ö : clock_t times (struct tms *buffer)

times ÇÔ¼ö´Â È£ÃâµÈ ÇÁ·Î¼¼½º¸¦ À§ÇÑ ÇÁ·Î¼¼¼­ ½Ã°£ Á¤º¸¸¦ buffer¿¡ ÀúÀåÇÑ´Ù. ¸®ÅϰªÀº clock()

ÀÇ °ª°ú µ¿ÀÏÇÏ´Ù: ¾î¶²±âÁØ ½Ã°£¿¡¼­ ½ÇÁ¦·Î °æ°úµÈ ½Ã°£. ±âÁØ ½Ã°£Àº ¾î¶² Ưº°ÇÑ ÇÁ·Î¼¼½º »ó

¿¡¼­´Â º¯ÇÏÁö ¾Ê´Â »ó¼ö°ªÀ̰í, ½Ã½ºÅÛ ½ÃÀ۽ð£°ú ¿¬±­µÈ ½Ã°£À¸·Î Ç¥ÇöÇÑ´Ù. ½ÇÆÐ¸¦ Çϸé

(clock_t)(-1)ÀÇ °ªÀ» ¸®ÅÏÇÏ´Ù.

À̽ļº ³ëÆ®: 17.1.1Àý [Basic CPU Time] ÆäÀÌÁö 233¿¡¼­ ¼³¸íµÈ clock ÇÔ¼ö´Â, ANSI C Ç¥ÁØÇÔ¼ö

À̰í, times ÇÔ¼ö´Â POSIX.1ÀÇ ÇÔ¼öÀÌ´Ù. GNU ½Ã½ºÅÛ¿¡¼­´Â, clockÇÔ¼ö·Î Ç¥ÇöµÈ °ªÀº times¿¡ ÀÇ

ÇØ ¸®ÅÏµÈ tms_utime °ú tms_stimeÀÇ ÇÕ°è¿Í µ¿µîÇÑ °ªÀÌ´Ù.

17.2 ´Þ·Â ½Ã°£.

ÀÌÀýÀº ±×·¹°í¸®¿À ·Â¿¡ ÀÇÇÑ ³¯Â¥¿Í ½Ã°£µéÀ» ±â¾ïÇϱâ À§ÇÑ µµ±¸µéÀ» ¼³¸íÇϰí ÀÖ´Ù.

³¯Â¥¿Í ½Ã°£ Á¤º¸¸¦ À§ÇÑ ¼¼°¡Áö Ç¥Çö¹æ¹ýÀÌ´Ù.

o ´Þ·Â ½Ã°£( µ¥ÀÌÅÍ Å¸ÀÔ time_t)Àº °£´ÜÈ÷ ¾î¶² Á¤ÇØÁø ±âÁؽð£ ÀÌÈÄ ¸îÃʰ¡ Èê

·¶´ÂÁö¸¦ ¼ýÀڷΠǥÇöÇÑ´Ù.

o ¶ÇÇÑ Ãʸ¦ ¹Ì¼¼ÇÏ°Ô ³ª´©¾î¼­ Ç¥ÇöÇÏ´Â °íÇØ»óµµ ½Ã°£ Ç¥ÇöÀÌ ÀÖ´Ù (µ¥ÀÌÅÍ Å¸ÀÔ

struct timeval). ´ç½ÅÀÌ Å« Á¤¹Ðµµ¸¦ ÇÊ¿ä·Î ÇÒ ¶§ º¸ÅëÀÇ ´Þ·Â ½Ã°£´ë½Å ÀÌ ½Ã°£

Ç¥ÇöÀ» »ç¿ëÇ϶ó.

o Áö¿ª ½Ã°£À̳ª broken-down time( µ¥ÀÌÅÍŸÀÔ struct tm)Àº Á¤ÇØÁø ½Ã°£ ±¸¿ª¿¡¼­

Á¤ÇØÁø ³â, ´Þ, µî µîÀÇ ±¸¼º¿ä¼ÒµéÀÇ ÁýÇÕÀ¸·Î ³¯Â¥¿Í ½Ã°£À» Ç¥ÇöÇÑ´Ù. ÀÌ ½Ã°£

Ç¥ÇöÀº º¸Åë Çü½ÄÈ­µÈ ³¯Â¥¿Í ½Ã°£ °ªµéÀ» °áÇÕÇϴµ¥ »ç¿ëµÈ´Ù.

17.2.1 °£´ÜÇÑ ´Þ·Â ½Ã°£.

ÀÌ ÀýÀº ´Þ·Â ½Ã°£À» Ç¥ÇöÇϱâ À§ÇÑ µ¥ÀÌÅÍ Å¸ÀÔ time_t¿Í ´Þ·Â ½Ã°£ ¿ÀºêÁ§Æ®¿¡¼­ µ¿ÀÛÇÏ´Â ÇÔ¼ö

µéÀ» ¼³¸íÇÑ´Ù. ÀÌ µµ±¸µéÀº Çì´õÆÄÀÏ `time.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔ : time_t

À̰ÍÀº ´Þ·Â ½Ã°£À» Ç¥ÇöÇϱâ À§Çؼ­ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ Å¸ÀÔÀÌ´Ù. GNU C ¶óÀ̺귯¸®¿Í ´Ù¸¥

POSIX-°è¿­¿¡¼­, time_t´Â long int ¿Í °°´Ù. Àý´ë½Ã°£°ªÀ¸·Î ÇØ¼®µÉ ¶§, ±×°ÍÀº ÇùÁ¤ ¼¼°è ½Ã°£

1970³â 1¿ù 1ÀÏ 00:00:00 ½Ã°£ ÀÌÈÄ °æ°úµÈ ÃÊÀÇ ¼ö¸¦ Ç¥ÇöÇÑ´Ù. ( ÀÌ ³¯Â¥´Â ¶§¶§·Î ½Ã´ë(epoch)·Î

½á »ç¿ëµÈ´Ù. ) ´Ù¸¥ ½Ã½ºÅÛ ¿¡¼­, time_t´Â Á¤¼öÀ̰ųª ÇÃ·ÎÆÃ-Æ÷ÀÎÆ®À̰ųª ÇÒ °ÍÀÌ´Ù.

ÇÔ¼ö : double difftime (time_t time1, time_t time0)

difftime ÇÔ¼ö´Â double ÇüÀ¸·Î time1°ú time2 »çÀÌÀÇ °æ°úµÈ ½Ã°£À» ÃÊ·Î ¸®ÅÏÇÑ´Ù. GNU ½Ã½ºÅÛ¿¡

¼­, ´ç½ÅÀº °£´ÜÈ÷ time_t °ªµéÀ» »©´Â °ÍÀ¸·Î ±× °ªÀ» ±¸ÇÒ ¼ö ÀÖÁö¸¸, ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­´Â time_t

µ¥ÀÌÅÍ Å¸ÀÔÀº Á÷Á¢ÀûÀ¸·Î »©±â¸¦ ÇÒ ¼ö°¡ ¾ø°Ô, ±âÈ£¿Í µÇÀÖÀ» °ÍÀÌ´Ù.

ÇÔ¼ö : time_t time (time_t *result)

time ÇÔ¼ö´Â time_tÀÇ ÇüÀ¸·Î Ç¥ÇöµÈ °ªÀ¸·Î ÇöÀçÀÇ ½Ã°£À» ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ Àμö result°¡ ³Î Æ÷ÀÎ

ÅͰ¡ ¾Æ´Ï¶ó¸é, time°ªÀº *result¿¡ ÀúÀåµÇ¾îÁø´Ù. ¸¸ÀÏ ´Þ·Â ½Ã°£ÀÌ À¯¿ëÇÏÁö ¾Ê´Ù¸é, (time_t)(-1)

ÀÌ ¸®ÅϵȴÙ.

17.2.2. °íÇØ»óµµ ´Þ·Â.

time_t µ¥ÀÌÅÍ Å¸ÀÔÀº ¿ÀÁ÷ 1ÃÊ »çÀÌÀÇ ÇØ»óµµ¸¦ °®´Â ´Þ·Â ½Ã°£µéÀ» Ç¥ÇöÇϱâ À§ÇØ »ç¿ëÇÑ´Ù. ¾î

¶² ÀÀ¿ëÇÁ·Î±×·¥Àº ´õ Á¤¹ÐÇÒ Çʿ䰡 ÀÖ´Ù.

±×·¡¼­, GNU C ¶óÀ̺귯¸® ¿¡¼­´Â 1ÃÊ º¸´Ù ´õ ³ôÀº °íÇØ»óµµÀÇ ´Þ·Â½Ã°£À» Ç¥ÇöÇÒ ¿ë·®ÀÌ ÀÖ´Â

ÇÔ¼öµéÀ» °®°í ÀÖ´Ù. ÀÌ Àý¿¡¼­ ¼³¸íÇϰí ÀÖ´Â ÇÔ¼öµé°ú ¿¬°üµÈ µ¥ÀÌÅÍ Å¸ÀÔµéÀº `sys/time.h'¿¡ ¼±

¾ðµÇ¾î ÀÖ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔ : struct timeval

±¸Á¶Ã¼ struct timevalÀº ´Þ·Â ½Ã°£À» Ç¥ÇöÇÑ´Ù. ±×°ÍÀº ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» °®°í ÀÖ´Ù.

long int tv_sec

À̰ÍÀº epoch ÀÌÈĸ¦ ÃÊ(second)·Î Ç¥ÇöÇÑ´Ù. À̰ÍÀº º¸Åë time_t °ª°ú µ¿ÀÏÇÏ´Ù.

long int tv_usec

À̰ÍÀº ¸¶ÀÌÅ©·ÎÃÊ(microsecond)·Î Ç¥ÇöµÈ ½Ã°£°ªÀÌ´Ù. ¾î¶² ½Ã°£ struct timeval °ªµéÀº ½Ã°£ °£°Ý

µéÀ» À§ÇÑ »ç¿ëÀÚÀ̰í, ±×·¯¸é tv_sec ¸â¹ö´Â °£°Ý¿¡¼­ °æ°úµÈ ÃÊ(second) À̰í, tv_usec´Â ºÎ°¡ÀûÀ¸

·Î È帥 ½Ã°£ ¸¶ÀÌÅ©·ÎÃÊÀÇ ¼öÀÌ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔ : struct timezone

±¸Á¶Ã¼ struct timezone´Â Áö¿ª ½Ã°£ ´ë¿¡ ´ëÇÑ ÃÖ¼ÒÀÇ Á¤º¸¸¦ ÀúÀåÇϱâÀ§ÇØ »ç¿ëµÈ´Ù. ±×°ÍÀº ´ÙÀ½

ÀÇ ¸â¹öµéÀ» °®´Â´Ù.

int tz_minuteswest

À̰ÍÀº ±×¸®´ÏÄ¡ Ç¥ÁؽÃ(GMT)ÀÇ minutes westÀÇ ¼öÀÌ´Ù.

int tz_dsttime

¸¸ÀÏ 0ÀÌ ¾Æ´Ï¶ó¸é, ±× ÇØ(year)ÀÇ ¾î¶² ±â°£µ¿¾È Àϱ¤ Àý¾à½Ã°£À» Àû¿ëÇÑ´Ù.

struct timezone ÇüÀº Àý´ë°ªÀÌ°í °áÄÚ »ç¿ëÇÒÀÏÀº ¾øÀ»°ÍÀÌ´Ù.´ë½Å¿¡ 17.2.6Àý [Time Zone

Functions] 241 ÆäÀÌÁö¿¡¼­ ¼³¸íµÈ µµ±¸µé¿¡¼­ »ç¿ëÇÑ´Ù.

struct timeval ÇüÀÇ µÎ°ªµéÀ» »©´Â °ÍÀÌ Á¾Á¾ ÇÊ¿äÇÏ´Ù. À̰÷¿¡´Â ÀÌ·±ÀÏÀ» ÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ý

ÀÌ ÀÖ´Ù. ±×°ÍÀº tv_sec ¸â¹ö°¡ unsigned ÇüÀÎ ¾î¶² ±â¹¦ÇÑ ¿î¿µÃ¼Á¦ÇÏ¿¡¼­ Á¶Â÷µµ µ¹¾Æ°£´Ù.

/* `struct timeval'ÀÇ ÇüÀ» °¡Áø °ª X ¿Í Y¸¦ »©°í, ±× °á°ú´Â RESULT¿¡ ÀúÀåÇ϶ó. ±× Â÷À̰¡ À½

¼öÀ̸é 1À» ¸®ÅÏÇϰí, ±×·¸Áö ¾ÊÀ¸¸é 0À» ¸®ÅÏÇ϶ó */

int

timeval_subtract (result, x, y)

struct timeval *result, *x, *y;

{

/* °»½ÅµÈ y·Î ³ªÁß¿¡ »©±â¸¦ ÇϱâÀ§ÇØ, y°ªÀ» °¡Á®¿Í¶ó */

if (x->tv_usec < y->tv_usec) {

int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;

y->tv_usec -= 1000000 * nsec;

y->tv_sec += nsec;

}

if (x->tv_usec - y->tv_usec > 1000000) {

int nsec = (y->tv_usec - x->tv_usec) / 1000000;

y->tv_usec += 1000000 * nsec;

y->tv_sec -= nsec;

}

/* ±â´Ù¸²À» À§ÇÑ ½Ã°£À» °è»êÇ϶ó. tv_usec´Â ¾î¶² ¾çÀÇ °ªÀÌ´Ù. */

result->tv_sec = x->tv_sec - y->tv_sec;

result->tv_usec = x->tv_usec - y->tv_usec;

/* ¸¸ÀÏ °á°ú°¡ À½¼öÀ̸é 0À» ¸®ÅÏÇ϶ó */

return x->tv_sec < y->tv_sec;

}

ÇÔ¼ö : int gettimeofday (struct timeval *tp, struct timezone *tzp)

gettimeofday ÇÔ¼ö´Â tp °¡ °¡¸®Å°°í ÀÖ´Â ±¸Á¶Ã¼ struct timeval¿¡¼­ ÇöÀçÀÇ ³¯Â¥¿Í ½Ã°£À» ¸®ÅÏÇÑ

´Ù. ±× ½Ã°£´ë¿¡ ´ëÇÑ Á¤º¸´Â tzp°¡ °¡¸®Å°°í ÀÖ´Â ±¸Á¶Ã¼ ¾È¿¡ ¸®ÅϵȴÙ. ¸¸ÀÏ tzp Àμö°¡ ³Î Æ÷

ÀÎÅͶó¸é, ½Ã°£ ´ë Á¤º¸´Â ¹«½ÃµÈ´Ù.

¸®ÅϰªÀÌ 0ÀÌ¸é ¼º°øÀ̰í, ½ÇÆÐ¸é -1ÀÌ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ´Ù.

ENOSYS

¿î¿µÃ¼Á¦°¡ ½Ã°£´ë Á¤º¸ ¾ò´Â °ÍÀ» Áö¿øÇÏÁö ¾Ê°í, tzp°¡ ³ÎÆ÷ÀÎÅͰ¡ ¾Æ´Ï´Ù. GNU ¿î¿µÃ¼Á¦´Â ½Ã

°£´ë Á¤º¸¸¦ Ç¥ÇöÇϱâ À§Çؼ­ struct timezone¸¦ »ç¿ëÇÏ´Â °ÍÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù; ±×°ÍÀº ¿¹Àü¿¡ 4.3

BSD¿¡¼­ »ç¿ëµÇ´ø °ÍÀÌ´Ù. ´ë½Å¿¡ 17.2.6Àý[Time Zone Functions] 241 ÆäÀÌÁö¿¡¼­ ¼³¸íµÈ µµ±¸µé

À» »ç¿ëÇ϶ó.

ÇÔ¼ö :

int settimeofday(const sruct timeval *tp, const struct timezone *tzp)

settimeofday ÇÔ¼ö´Â Àμöµé¿¡ µû¶ó¼­ ÇöÀçÀÇ ³¯Â¥¿Í ½Ã°£À» ¼³Á¤ÇÑ´Ù. gettimeofday¸¦ ÅëÇØ¼­, ¸¸

ÀÏ tzp°¡ ³Î Æ÷ÀÎÅͶó¸é, ½Ã°£´ë Á¤º¸´Â ¹«½ÃµÈ´Ù. ´ç½ÅÀÌ settimeofday¸¦ »ç¿ëÇÒ·Á¸é Ư±ÇÀÌ ºÎ¿©

µÈ »ç¿ëÀÚÀ̾î¾ß¸¸ ÇÑ´Ù. ¼º°øÇÏ¸é ¸®ÅϰªÀº 0À̰í, ½ÇÆÐÇϸé -1ÀÌ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦

À§ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ´Ù.

EPERM

ÀÌ ÇÁ·Î¼¼½º°¡ Ư±ÇÀÌ ¾ø±â ¶§¹®¿¡ ½Ã°£À» ¼³Á¤ÇÒ ¼ö ¾ø´Ù.

ENOSYS

¿î¿µÃ¼Á¦°¡ ½Ã°£´ë Á¤º¸¸¦ ¼³Á¤ÇÏ´Â °ÍÀ» Áö¿øÇÏÁö ¾Ê°í, tzp°¡ ³Î Æ÷ÀÎÅͰ¡ ¾Æ´Ï´Ù.

ÇÔ¼ö :

int adjtime (const struct timeval *delta, struct timeval *olddelta)

ÇöÀçÀÇ ½Ã°£À» Á¡Â÷ÀûÀ¸·Î Á¶Á¤Çϱâ À§Çؼ­ ½Ã½ºÅÛ ½Ã°è¸¦ ºü¸£°Ô, ¶Ç´Â ´À¸®°Ô ÇÏ´Â ÇÔ¼öÀÌ´Ù. ¸¸

ÀÏ °£´ÜÈ÷ ÇöÀçÀÇ ½Ã°£À» ¼³Á¤ÇÒ ¼ö ¾ø´Â, Ç×»ó õÆíÀÏ·üÀûÀ¸·Î Áõ°¡Çϱ⸸ ÇÏ´Â ½Ã½ºÅÛ ½Ã°è¶ó¸é,

À̰ÍÀº ±× ½Ã°£À» ¸ÂÃâ ¼ö°¡ ÀÖ´Ù.

delta Àμö´Â ÇöÀçÀÇ ½Ã°£À» À§ÇÑ Á¶Á¤À» ÁöÁ¤ÇÑ´Ù. ¸¸ÀÏ À½¼ö¶ó¸é ½Ã½ºÅÛ ½Ã°è´Â ÀÒ¾î¹ö¸° ¸¹Àº ½Ã

°£À» º¹±¸ÇÒ¶§±îÁö õõÈ÷ ³»·Á°¡°í, ¸¸ÀÏ ¾ç¼ö¶ó¸é, ½Ã½ºÅÛ ½Ã°è´Â õõÈ÷ ¿Ã¶ó°£´Ù. ¸¸ÀÏ olddelta

Àμö°¡ ³Î Æ÷ÀÎÅͰ¡ ¾Æ´Ï¶ó¸é, adjtimeÇÔ¼ö´Â Á¶Á¤ÀÌ ¾ÆÁ÷ ¼öÇàµÇ±â ÀüÀÇ ¾ÕÀÇ ½Ã°£¿¡ ´ëÇÑ Á¤º¸¸¦

¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â Ưº°È÷ ·ÎÄà ³×Æ®¿÷»óÀÇ ÄÄÇ»Å͵éÀÇ ½Ã°£À» µ¿±âÈ­ Çϴµ¥ »ç¿ëµÈ´Ù. ´ç½ÅÀº

±×°ÍÀ» »ç¿ëÇϱâ À§Çؼ­´Â Ư±ÇÀÌ ºÎ¿©µÈ »ç¿ëÁö°¡ µÇ¾î¾ß¸¸ ÇÑ´Ù. ¼º°øÇϸé 0À» ¸®ÅÏÇϰí, ½ÇÆÐÇÏ

¸é -1À» ¸®ÅÏÇÑ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ´Ù.

EPERM

´ç½ÅÀº ½Ã°£À» ¼³Á¤ÇÒ ¼ö Àִ Ư±ÇÀ» °®°í ÀÖÁö ¾Ê´Ù.

À̽ļº ³ëÆ® : gettimeofday, settimeofday, ±×¸®°íadjtime ÇÔ¼öµéÀº BSD·ÎºÎÅÍ ¿Ô´Ù.

17.2.3 Broken-down ½Ã°£.

´Þ·Â ½Ã°£Àº ÃÊ´ÜÀ§·Î Ç¥ÇöµÈ´Ù. À̰ÍÀº °è»êÇϱâ´Â Æí¸®ÇÏÁö¸¸, »ç¶÷ÀÌ º¸Åë ³¯Â¥¿Í ½Ã°£À» Ç¥Çö

ÇÏ´Â ¹æ¹ý°ú´Â ´Ù¸£´Ù. ±×¿Í ´Þ¸®, broken-down ½Ã°£Àº ¿¬µµ, ´Þ, ³¯Â¥ µîÀ» ºÐ¸®ÇÏ¿© 2ÁøÀ¸·Î Ç¥

ÇöÇÑ´Ù. Broken down ½Ã°£°ªÀº °è»ê¿¡´Â ºÒÆíÇÏÁö¸¸, ±×µéÀº Àΰ£ÀÌ ÀÐÀ» ¼ö ÀÖ´Â ½Ã°£À¸·Î À¯¿ë

ÇÏ°Ô »ç¿ëµÈ´Ù.

broken-down ½Ã°£ °ªÀº Áö¿ª½Ã°£´ëÀÇ ¼±Åðú Ç×»ó ¿¬°üµÇ¾î ÀÖ°í, ±×°ÍÀº Ç×»ó ¾î¶² ½Ã°£´ë°¡ »ç

¿ëµÇ¾úÀ½À» ÁöÀûÇÑ´Ù. ÀÌ Àý¿¡ ÀÖ´Â ½Éº¼µéÀº Çì´õÆÄÀÏ `time.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔ : struct tm

À̰ÍÀº broken-down ½Ã°£À» Ç¥ÇöÇϱâ À§ÇØ »ç¿ëµÇ´Â µ¥ÀÌÅÍ Å¸ÀÔÀÌ´Ù. ±× ±¸Á¶Ã¼´Â ¾î´À ¼ø¼­·Î

³ªÅ¸³¯ ¼ö ÀÖ´Â, Àû¾îµµ ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù.

int tm_sec

À̰ÍÀº 0¿¡¼­ 59±îÁöÀÇ ¹üÀ§¸¦ °®´Â ÃÊ(second)¸¦ Ç¥ÇöÇϰí ÀÖ´Ù.(½ÇÁ¦·Î´Â "À±ÃÊ"¸¦ Çã¿ëÇØ¼­, 61±î

Áö°¡ Á¦ÇÑÀÌ´Ù.)

int tm_min

À̰ÍÀº 0¿¡¼­ 59±îÁöÀÇ ¹üÀ§¸¦ °®´Â ºÐ(minute)À» ³ªÅ¸³½´Ù.

int tm_hour

À̰ÍÀº 0¿¡¼­ 23±îÁöÀÇ ¹üÀ§¸¦ °®´Â ½Ã(hours)¸¦ ³ªÅ¸³½´Ù.

int tm_mday

À̰ÍÀº 1¿¡¼­ 31±îÁöÀÇ ¹üÀ§¸¦ °®´Â ´ÞÁßÀÇ ±×³¯À» ³ªÅ¸³½´Ù.

int tm_mon

À̰ÍÀº 0¿¡¼­ 11±îÁöÀÇ ¹üÀ§¸¦ °®´Â, 1¿ù ÀÌÈÄÀÇ ´ÞÀÇ ¼ö¸¦ Ç¥ÇöÇÑ´Ù.

int tm_year

À̰ÍÀº 1900³â ÀÌÈÄÀÇ ³â(year)ÀÇ ¼öÀÌ´Ù.

int tm_wday

À̰ÍÀº 0¿¡¼­ 6ÀÇ ¹üÀ§¸¦ °®´Â, ÀÏ¿äÀÏÀ» ±âÁ¡À¸·Î ÇØ¼­ Áö³­³¯ÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù.

int tm_yday

À̰ÍÀº 0¿¡¼­ 365ÀÇ ¹üÀ§¸¦ °®´Â, 1¿ù 1ÀÏ ÀÌÈÄ Áö³­³¯ÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù.

int tm_isdst

À̰ÍÀº ½Ã°£À» Ç¥ÇÑÇϴµ¥, Àϱ¤Àý¾à ½Ã°£ÀÌ ¿µÇâÀ» ÁÖ´ÂÁö(ÀÖ¾ú°Å³ª, ¶Ç´Â ÀÖÀ» ¿¹Á¤À̰ųª)¸¦ ÁöÀû

ÇÏ´Â Ç÷¡±×ÀÌ´Ù. ±× °ªÀº ¸¸ÀÏ Àϱ¤ Àý¾à½Ã°£ÀÌ ¿µÇâÀ» ¹ÌÄ¡¸é ¾ç¼öÀ̰í, ¸¸ÀÏ ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ

°í, ±× Á¤º¸°¡ À½¼öÀ̸é À¯¿ëÇÏÁö ¾Ê´Ù.

long int tm_gmtoff

ÀÌÇʵå´Â broken-down ½Ã°£°ªÀ» °è»êÇϴµ¥ »ç¿ëµÇ¾îÁö´Â ½Ã°£´ë¸¦ ³ªÅ¸³½´Ù; ±×°ÍÀº ÃÊÀÇ ´ÜÀ§·Î

±×¸®´ÏÄ¡ Ç¥ÁؽÃ(GMT)¸¦ ¾ò¾î¼­, ±×°Í¿¡ Áö¿ª½Ã°£À» ¾ò±â À§Çؼ­ ´õÇØÁ®¾ß¸¸ ÇÏ´Â ¾ç( amount)ÀÌ

´Ù. ±× °ªÀº º¯È­ °¡´ÉÇÑ ½Ã°£´ë( 17.2.6Àý [Time Zone Functions] 241 ÆäÀÌÁö ÂüÁ¶.)¿Í °°Àº °ÍÀÌ

´Ù. ´ç½ÅÀº ¶ÇÇÑ ±×¸®´ÏÄ¡ Ç¥ÁؽÃÀÇ "seconds westÀÇ ¼ö"¶ó°í »ý°¢ÇÒ ¼öµµ ÀÖ´Ù. tm_gmtoff Çʵå´Â

GNU ¶óÀ̺귯¸® È®ÀåÀÌ´Ù.

const char *tm_zone

À̰ÍÀº broken-down ½Ã°£°ªÀ» °è»êÇϴµ¥ »ç¿ë µÇ¾îÁö´Â ½Ã°£´ë¸¦ À§ÇÑ ¼¼-¹®ÀÚ À̸§ÀÌ´Ù. À̰ÍÀº

GNU ¶óÀ̺귯¸® È®ÀåÀÌ´Ù.

ÇÔ¼ö : struct tm *localtime (const time_t *time)

localtime ÇÔ¼ö´Â timeÀÌ °¡¸®Å°°í ÀÖ´Â ´Þ·Â½Ã°£À» »ç¿ëÀÚ°¡ Á¤ÇÑ ½Ã°£´ë¿Í ¸ÂÃ߾, broken-down

½Ã°£À¸·Î º¯È¯ÇÑ´Ù. ¸®ÅϰªÀº ¾î´À ³¯Â¥¿Í ½Ã°£ ÇÔ¼öµéÀ» È£ÃâÇØ¼­ ¾òÀº Á¤Àû broken-down ½Ã°£ ±¸

Á¶Ã¼¸¦ °¡¸®Å°°í ÀÖ´Â Æ÷ÀÎÅÍÀÌ´Ù. (±×·¯³ª ¾î´À ´Ù¸¥ ¶óÀ̺귯¸® ÇÔ¼öµµ ÀÌ ¿ÀºêÁ§Æ®ÀÇ ³»¿ë¿¡ µ¡

¾º¿ì±â (overwrite)¸¦ ÇÒ¼ö¾ø´Ù.) localtimeÀ» È£ÃâÇÏ´Â °ÍÀº ´Ù¸¥ ÇϳªÀÇ ¿µÇâÀÌ ÀÖ´Ù: ±×°ÍÀº º¯¼ö

tzname¸¦ ÇöÀç ½Ã°£´ë¿¡ ´ëÇÑ Á¤º¸·Î ¼³Á¤ÇÑ´Ù. 17.2.6Àý [Time Zone Functions] 241 ÆäÀÌÁö ÂüÁ¶.

ÇÔ¼ö : struct tm *gmtime(const time_t *time)

ÀÌ ÇÔ¼ö´Â broen-downÀÌ ¼¼°è ÇùÁ¤½Ã°£À¸·Î Ç¥ÇöµÈ´Ù´Â °ÍÀ» Á¦¿ÜÇϰí, localtime°ú À¯»çÇÏ´Ù._±×¸®

´ÏÄ¡ Ç¥Áؽð¡ Áö¿ª ½Ã°£´ë¿Í ´õ ¿¬°üÀÌ ÀÖ´Ù. ´Þ·Â ½Ã°£µéÀº Ç×»ó ¼¼°è ÇùÁ¤½Ã·Î Ç¥ÇöµÈ´Ù´Â °ÍÀ»

±â¾ïÇ϶ó.

ÇÔ¼ö : time_t mktime(struct tm *brokentime)

mktime ÇÔ¼ö´Â broken-down ½Ã°£ ±¸Á¶Ã¼¸¦ ´Þ·Â½Ã°£ Ç¥ÇöÀ¸·Î º¯È¯½Ã۱â À§Çؼ­ »ç¿ëµÈ´Ù. ±×°Í

Àº ´Ù¸¥ ³¯Â¥¿¡ ±âÃÊÇÏ¿© ¿¬µµ(year), ÁÖ(week)ÀÇ ³¯¼ö¿Í ½Ã°£ ¿ä¼ÒµéÀ» ä¿ö¼­ broken-down ±¸Á¶

üÀÇ ³»¿ëÀ» "ÀϹÝÈ­"ÇÑ´Ù.

mktimeÇÔ¼ö´Â broken-down ½Ã°£ ±¸Á¶Ã¼ÀÇ ¸â¹öÀÎ tm_wday¿Í tm_ydayÀÇ Á¤ÇØÁø ³»¿ëµéÀ» ¹«½ÃÇÑ

´Ù. ±×°ÍÀº ´Þ·Â ½Ã°£À» °è»êÇϱâ À§Çؼ­ ´Ù¸¥ ±¸¼º¿ä¼ÒÀÇ °ªµéÀ» »ç¿ëÇÑ´Ù; ±×°ÍÀº ±×µéÀÇ º¸Åë

¹üÀ§ÀÇ ¹Û¿¡ ÀÖ´Â ºñÀϹÝÈ­µÈ °ªµéÀ» °®´Â ±×µé ±¸¼º¿ä¼ÒµéÀ» À§Çؼ­ Çã¿ëµÇ¾ú´Ù. mktimeÀÌ ¸¶Áö

¸·À¸·Î ÇÏ´ÂÀÏÀº brokentime ±¸Á¶Ã¼ÀÇ ±¸¼º¿ä¼ÒµéÀ» Á¶Á¤ÇÏ´Â °ÍÀÌ´Ù( tm-wday ¿Í tm-yday¸¦ Æ÷

ÇÔÇØ¼­ ). ¸¸ÀÏ Á¤ÇØÁø broken-down ½Ã°£ÀÌ ´Þ·Â ½Ã°£À¸·Î Ç¥ÇöµÉ ¼ö ¾ø´Ù¸é, mktimeÀº

(time_t)(-1)ÀÇ °ªÀ» ¸®ÅÏÇϰí brokentimeÀÇ ³»¿ëÀ» °»½ÅÇÒ ¼ö ¾ø´Ù. È£ÃâµÈ mktimeÀº ¶ÇÇÑ ÇöÀçÀÇ

½Ã°£´ë¿¡ ´ëÇÑ Á¤º¸·Î º¯¼ö tzname ¸¦ ¼³Á¤ÇÑ´Ù. 17.2.6Àý [Time Zone Functions] 241 ÆäÀÌÁö ÂüÁ¶.

17.2.4 Çü½ÄÈ­µÈ ³¯Â¥¿Í ½Ã°£.

ÀÌ Àý¿¡ ¼³¸íµÈ ÇÔ¼öµéÀº ¹®ÀÚ¿­·Î ½Ã°£ °ªµéÀ» Çü½ÄÈ­ ÇÑ´Ù. À̵é ÇÔ¼öµéÀº Çì´õÆÄÀÏ 'time.h'¿¡

¼±¾ðµÇ¾î ÀÖ´Ù.

ÇÔ¼ö : char *asctime(const struct tm *brokentime)

asctime ÇÔ¼ö´Â brokentimeÀÌ °¡¸®Å°°í ÀÖ´Â broken-down ½Ã°£À» Ç¥ÁØ Çü½ÄÀ» °¡Áø ¹®ÀÚ¿­·Î º¯È¯

ÇÑ´Ù.

"Tue May 21 13:46:22 1991\n"

Á־ȿ¡ ÀÖ´Â ¿äÀÏÀÇ ¾àÀÚ´Â: `Sun', `Mon', `Tue', `Wed', `Thu' `Fri' ±×¸®°í `Sat' ÀÌ´Ù.

´ÞµéÀÇ ¾àÀÚ´Â: '`Jan', `Feb', 'Mar', 'Apr', 'May', Jun', 'Jul', 'Aug', 'Sep', 'Oct', Nov', ±×¸®°í

'Dec' ÀÌ´Ù.

¸®ÅϰªÀº ¾î¶² ³¯Â¥¿Í ½Ã°£ ÇÔ¼öµéÀÇ È£Ãâ¿¡ ÀÇÇÑ °á°ú·Î µ¤¾î¾²±â°¡ µÈ, Á¤ÀûÀ¸·Î ÇÒ´çµÈ ¹®ÀÚ¿­À»

°¡¸®Å²´Ù. (±×·¯³ª ¾î´À ´Ù¸¥ ÇÔ¼öµµ ÀÌ ¹®ÀÚ¿­ÀÇ ³»¿ë¿¡ µ¡¾º¿ì±â¸¦ ÇÒ ¼ö ¾ø´Ù.)

ÇÔ¼ö : char *ctime(const time_t *time)

ctimeÇÔ¼ö´Â ½Ã°£°ªÀÌ ´Þ·Â½Ã°£(Áö¿ª½Ã°£) Çü½ÄÀ¸·Î ÁöÁ¤µÇ¾ú´Ù´Â °ÍÀ» Á¦¿ÜÇϰí´Â, asctime°ú À¯»ç

ÇÏ´Ù. ±×°ÍÀº asctime(localtime (time))°ú °°´Ù. ctime´Â localtimeÀ¸·Î Çϱ⶧¹®¿¡ º¯¼ö tznameÀ»

¼³Á¤ÇÑ´Ù. 17.2.6Àý [Time Zone Function] 241ÆäÀÌÁö ÂüÁ¶.

ÇÔ¼ö : size_t strftime(char *s, size_t size, const char *template,

const struct tm *brokentime)

ÀÌ ÇÔ¼ö´Â sprintf ÇÔ¼ö(7.11Àý [Formatted Input] 85ÆäÀÌÁö ÂüÁ¶)¿Í À¯»çÇÏÁö¸¸, Çü½Ä ÅÛÇø´

template¾È¿¡ ³ªÅ¸³¯ ¼ö ÀÖ´Â º¯È¯ÁöÁ¤Àº ½Ã°£ º¯È¯À» À§Çؼ­ Á¤ÇØÁø ÇöÀçÀÇ Áö¿ª½Ã°£¿¡ µû¸¥

brokentimeÀÇ ³¯Â¥¿Í ½Ã°£ÀÇ ¿ä¼ÒµéÀ» ÇÁ¸°Æ®Çϵµ·Ï Ưº°È­µÇ¾ú´Ù. (19Àå [Locales], 259 ÆäÀÌÁö Âü

Á¶.) template¾È¿¡ ³ªÅ¸³­ º¸ÅëÀÇ ¹®ÀÚµéÀº Ãâ·Â ¹®ÀÚ¿­ s¿¡ º¹»çµÇ¾î Áø´Ù; À̰ÍÀº ´ÙÁß¹ÙÀÌÆ® ¹®ÀÚ

µé·Î ÀÌ·ç¾îÁø ¿­µéÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. º¯È¯ÁöÁ¤ÀÚ´Â `%'¹®ÀÚ ´ÙÀ½¿¡ ³ªÅ¸³ª°í, ´ÙÀ½Ã³·³ Ãâ·Â ¹®

ÀÚ¿­À» Á¶Á¤ÇÑ´Ù.

%a ÇöÀçÀÇ Áö¿ª¿¡ ¸Â´Â ¾àÀڷΠǥÇöµÈ ¿äÀÏÀ̸§.

%A ÇöÀçÁö¿ª¿¡ ¸Â´Â ¿ÏÀüÇÑ ¿äÀÏÀ̸§.

%b ÇöÀçÁö¿ª¿¡ ¸Â´Â ¾àÀÚÀÎ ´Þ À̸§.

%B ÇöÀçÁö¿ª¿¡ ¸Â´Â ¿ÏÀüÇÑ ´Þ À̸§.

%c ÇöÀç Áö¿ªÀ» À§ÇØ ¼±ÅÃµÈ ³¯Â¥¿Í ½Ã°£ Ç¥Çö.

%d ½ÊÁø¼ö·Î Ç¥ÇöµÈ(01¿¡¼­ 31±îÁöÀÇ ¹üÀ§) ÇÑ´Þ ¾ÈÀÇ ³¯Â¥.

%H 24½Ã°£ ½Ã°è¸¦ »ç¿ëÇØ¼­(00¿¡¼­ 23±îÁöÀÇ ¹üÀ§), ½ÊÁø¼ö·Î ³ªÅ¸³½ ½Ã°£.

%I 12½Ã°£ ½Ã°è¸¦ »ç¿ëÇØ¼­(01¿¡¼­ 12±îÁöÀÇ ¹üÀ§), ½ÊÁø¼ö·Î ³ªÅ¸³½ ½Ã°£.

%j ½ÊÁø¼ö(001¿¡¼­ 366±îÁöÀÇ ¹üÀ§)·Î Ç¥ÇöµÈ Àϳâ¾ÈÀÇ ³¯¼ö.

%m ½ÊÁø¼ö(01¿¡¼­ 12±îÁöÀÇ ¹üÀ§)·Î Ç¥ÇöµÈ ´Þ.

%M ½ÊÁø¼ö·Î Ç¥ÇöµÈ ºÐ.

%p ÁÖ¾îÁø ½Ã°£°ª¿¡ ¸Â´Â, `am'¶Ç´Â `pm'; ¶Ç´Â ÇöÀçÁö¿ª¿¡ ¸Â´Â ¿¬°üµÈ ¹®ÀÚ¿­.

%S ½ÊÁø¼ö·Î Ç¥ÇöµÈ ÃÊ.

%U ù ¹øÂ°ÁÖÀÇ Ã¹ ¹øÂ° ³¯ÀΠù ¹øÂ° ÀÏ¿äÀÏÀ» ±âÁ¡À¸·Î ÇØ¼­, ½ÊÁø¼ö·Î Ç¥ÇöµÈ ¿Ã

ÇØÀÇ ÁÖÀǼö

%W ù ¹øÂ°ÁÖÀÇ Ã¹ ¹øÂ°³¯ÀΠù ¹øÂ° ¿ù¿äÀÏÀ» ±âÁ¡À¸·Î ÇØ¼­, ½ÊÁø¼ö·Î Ç¥ÇöµÈ ¿Ã

ÇØÀÇ ÁÖÀÇ ¼ö

%w ÀÏ¿äÀÏÀ» 0À¸·Î ÇÑ, ½ÊÁø¼ö·Î Ç¥ÇöµÈ ¿äÀÏ.

%x ½Ã°£ ¾øÀÌ, ÇöÀçÁö¿ªÀ» À§ÇØ ¿¹¾àµÈ ³¯Â¥ Ç¥Çö.

%X ³¯Â¥¾øÀÌ, ÇöÀçÁö¿ªÀ» À§ÇØ ¿¹¾àµÈ ½Ã°£ Ç¥Çö.

%y ¼¼±â(century)¾øÀÌ(00¿¡¼­ 99±îÁöÀÇ ¹üÀ§), ½ÊÁø¼ö·Î Ç¥ÇöµÈ ¿¬µµ.

%Y ¼¼±â¸¦ Æ÷ÇÔÇØ¼­, ½ÊÁø¼ö·Î Ç¥ÇöµÈ ¿¬µµ.

%Z ½Ã°£´ë³ª À̸§ ¶Ç´Â ¾àÀÚ(½Ã°£´ë°¡ °áÁ¤µÉ ¼ö ¾ø´Ù¸é ºñ¿ö¶ó)

%% ¹®ÀÚ `%'

size Àμö´Â ³Î Á¾·á¹®ÀÚ¸¦ Æ÷ÇÔÇØ¼­, ¹è¿­ s¿¡ ÀúÁ¤µÈ ¹®ÀÚµéÀÇ ÃÖ´ë °³¼ö¸¦ ³ªÅ¸³»±â À§Çؼ­ »ç¿ë

µÉ ¼ö ÀÖ´Ù. ¸¸ÀÏ Çü½ÄÈ­µÈ ½Ã°£ÀÌ size Å©±âº¸´Ù ´õ ¸¹Àº ¹®ÀÚµéÀÌ ÇÊ¿äÇÏ´Ù¸é, ÃʰúµÇ´Â ¹®ÀÚµéÀº

¹ö·ÁÁø´Ù. strtimeÀ» ÅëÇÑ ¸®ÅϰªÀº ³Î Á¾·á¹®ÀÚ¸¦ Æ÷ÇÔÇÏÁö ¾ÊÀº, ¹è¿­ s¿¡ ÀúÀåµÈ ¹®ÀÚµéÀÇ °³¼ö

ÀÌ´Ù. ¸¸ÀÏ value°¡ size¿Í °°´Ù¸é, ±× ¹è¿­ÀÌ ³Ê¹« ÀÛ¾ÒÀ½À» ÀǹÌÇÑ´Ù; ´ç½ÅÀº ¹è¿­À» Å©±â¸¦ Å©°Ô

Çϰí, strtime¸¦ Àç È£ÃâÇ϶ó. ¸¸ÀÏ s°¡ ³Î Æ÷ÀÎÅͶó¸é, strftimeÀº ½ÇÁ¦·Î ¾Æ¹«°Íµµ ¾²Áö ¾ÊÁö¸¸, ´ë

½Å¿¡ ¾²¿©Á³´ø ¹®ÀÚµéÀÇ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù. strftime¿¡ ´ëÇÑ ¿¹´Â 17.2.7Àý [Time Functions

Example] 242 ÆäÀÌÁö ÂüÁ¶.

17.2.5 TZÀ¸·Î ½Ã°£´ë¸¦ Á¤Çϱâ.

GNU ½Ã½ºÅÛ¿¡¼­, »ç¿ëÀÚ´Â TZ ȯ°æº¯¼ö·Î ½Ã°£´ë¸¦ Á¤ÇÒ ¼ö ÀÖ´Ù. ȯ°æº¯¼ö¸¦ ¾î¶»°Ô ¼³Á¤Çϴ°¡

¿¡ ´ëÇÑ Á¤º¸´Â, 22.2Àý [Environment Variables]317 ÆäÀÌÁö ÂüÁ¶. ½Ã°£´ë¸¦ ¾ï¼¼½ºÇϱâ À§ÇÑ ÇÔ¼ö

´Â 'time.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù. TZ º¯¼öÀÇ °ªÀº ¼¼°¡Áö Çü½ÄÁß¿¡ Çϳª°¡ µÈ´Ù. ù ¹øÂ° Çü½ÄÀº Áö¿ª

½Ã°£´ë¿¡¼­ Àϱ¤Àý¾à½Ã°£(¶Ç´Â ½æ¸ÓŸÀÓ)ÀÌ ¾ø´Â °÷¿¡¼­ »ç¿ëµÈ´Ù:

std offset

std ¹®ÀÚ¿­Àº ½Ã°£´ëÀÇ À̸§À» Á¤ÇÑ´Ù. ±×°ÍÀº ¼¼ °³ ÀÌ»óÀÇ ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ °¡Á®¾ß¸¸ Çϰí, ÄÝ·Ð

ÀÌ ¼±ÇàµÇ°Å³ª, ¼ýÀÚ, ÄÞ¸¶, ¶Ç´Â Ç÷¯½º³ª ¸¶À̳ʽº ºÎÈ£°¡ µé¾î°¡ ÀÖÀ¸¸é ¾ÈµÈ´Ù. Áö¿ª½Ã°£´ë À̸§

»çÀÌ¿¡ °ø¹éÀÌ ¾ø¾î¾ßÇÑ´Ù. ÀÌ·¯ÇÑ Á¦ÇѵéÀº Á¤È®ÇÏ°Ô ±× ÁöÁ¤À» ºÐ¼®ÇϱâÀ§ÇØ ÇÊ¿äÇÏ´Ù. offset´Â

ÇùÁ¤ ¼¼°è ½Ã°£À» ¾ò±âÀ§Çؼ­ Áö¿ª½Ã°£¿¡ ´õÇØ¾ß¸¸ ÇÏ´Â ½Ã°£°ªÀ» Á¤ÇÑ´Ù. ±×°ÍÀº [+|-]hh[:mm[:ss]]

¿Í °°Àº ±¸¹®ÀÌ´Ù. À̰ÍÀº ¸¸ÀÏ Áö¿ª½Ã°£´ë°¡ ±×¸®´ÏÄ¡ ÀÚ¿À¼±(Prime Meridian)ÀÇ ¼­ÂÊ¿¡ ÀÖ´Ù¸é

¾ç¼öÀ̰í, µ¿ÂÊ¿¡ ÀÖ´Ù¸é À½¼öÀÌ´Ù. ½Ã°£Àº 0°ú 24ÀÇ »çÀÌ¿¡ ÀÖ¾î¾ß¸¸ Çϰí, ºÐ°ú ÃÊ´Â 0°ú 59ÀÇ »ç

ÀÌ¿¡ ÀÖ¾î¾ß¸¸ ÇÑ´Ù.

¿¹¸¦ µé¾î, Àϱ¤Àý¾à½Ã°£À» ÅÃÇÏÁö ¾Ê°í, µ¿ºÎÇ¥Áؽð£À» ¾î¶»°Ô Á¤ÇÏ´ÂÁö´Â ´ÙÀ½°ú °°´Ù.

EST+5

Àϱ¤Àý¾à½Ã°£ÀÌ ÀÖ´Â °÷¿¡¼­ »ç¿ëµÇ´Â µÎ ¹øÂ° Çü½Ä:

std offset dst [offset],start[/time],end[/time]

óÀ½ÀÇ std ¿Í offsetÀº À§¿¡ ¼³¸íµÈ°Íó·³ Ç¥ÁØ ½Ã°£ ´ë¸¦ Á¤ÇÑ´Ù. dst ¹®ÀÚ¿­°ú offsetÀº Àϱ¤Àý¾à

½Ã°£ÀÇ ½Ã°£´ë¿¡ ¸Â´Â name°ú offsetÀ» Á¤ÇÑ´Ù; ¸¸ÀÏ offsetÀ» »ý·«Çϸé, µðÆúÆ®·Î Ç¥Áؽ𣺸´Ù ÇÑ

½Ã°£ ¾ÕÀ¸·Î Á¤ÇØÁø´Ù.

ÁöÁ¤ÀÚÀÇ ³ª¸ÓÁö´Â Àϱ¤Àý¾à½Ã°£ÀÌ Àִ°÷¿¡¼­ÀÇ ¼³¸íÀÌ´Ù. Àϱ¤Àý¾à ½Ã°£ÀÌ ¿µÇâÀ» ¹ÌÄ¥¶§´Â ½Ã

ÀÛÇʵ忡 ÀÖ°í, ´Ù½Ã Ç¥Áؽð£À¸·Î º¯È¯µÇ¾úÀ»¶§´Â ³¡ Çʵ忡 ÀÖ´Ù. ´ÙÀ½ Çü½ÄµéÀº À̵é Çʵ带 À§

ÇÑ ¼³¸íÀÌ´Ù.

Jn

À̰ÍÀº 1°ú 365»çÀÌ¿¡ ÀÖ´Â ¾î¶² ³¯ nÀ¸·Î, À²¸®¿ì½º·ÂÀÇ ³¯Â¥¸¦ Á¤ÇÑ´Ù. À±³â¿¡ ÀÖ´Â 2¿ù 29ÀÏÀº

´õÇØÁöÁö ¾Ê´Â´Ù.

n

0°ú 365»çÀÌ¿¡ ÀÖ´Â ¾î¶²³¯ nÀ¸·Î, À²¸®¿ì½º·ÂÀÇ ³¯Â¥¸¦ Á¤ÇÑ´Ù. À±³â¿¡ ÀÖ´Â 2¿ù 29ÀÏÀº ´õÇØÁø´Ù.

Mm.w.d

m´ÞÀÇ wÁÖÀÇ d³¯. ³¯ d´Â 0(ÀÏ¿äÀÏ)¿Í 6»çÀÌÀÇ °ªÀ̾î¾ßÇÑ´Ù. ÁÖ w´Â ¹Ýµå½Ã 1°ú 5»çÀÌÀÌ´Ù; ÁÖ

1Àº ±×´Þ¿¡¼­ ³¯ d°¡ ¹ß»ýÇÑ Ã¹ ¹øÂ° ÁÖÀ̰í, ÁÖ 5´Â ´Þ¿¡¼­ ¸¶Áö¸·³¯ d°¡ ÀÖ´Â ¸¶Áö¸·ÁÖÀÌ´Ù. ´Þ

mÀº 1°ú 12»çÀÌÀÌ´Ù. timeÇʵåµéÀº Áö¿ª½Ã°£À» ´Ù¸¥ ½Ã°£Ç¥ÇöÀ¸·Î º¯È¯ÇÒ ¶§ ÁöÁ¤ÇÑ´Ù. ¸¸ÀÏ»ý·«

µÇ¸é, µðÆúÆ®°ªÀº 02:00:00ÀÌ´Ù. ¿¹¸¦ µé¾î, ¹Ì±¹¿¡¼­ Àû´çÇÑ Àϱ¤Àý¾à½Ã°£ÀÌ Æ÷ÇÔµÈ ³¯Â¥·Î µ¿ºÎ½Ã

°£´ë¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ ÀÖ´Ù. º¸Åë GMT·ÎºÎÅÍÀÇ offset´Â 5½Ã°£ÀÌ´Ù; ±×¸®´ÏÄ¡ ÀÚ¿À¼±À¸·ÎºÎÅÍ ¼­

ÂÊÀ¸·Î Àֱ⶧¹®¿¡ ¾ç¼ö°ªÀÌ´Ù. ½æ¸ÓŸÀÓÀº 4¿ù ù ¹øÂ° ÀÏ¿äÀÏ ¿ÀÀü 2½Ã¿¡ ½ÃÀ۵ǰí, 10¿ù ¸¶Áö¸·

ÀÏ¿äÀÏ ¿ÀÀü 2½Ã¿¡ ³¡³­´Ù.

EST+5EDT,M4.1.0/M10.5.0

Ưº°ÇÑ ¾î´À Áö¿ª¿¡¼­ Àϱ¤Àý¾à½Ã°£ÀÇ ¿¹Á¤Àº ÇØ¸¶´Ù º¯°æµÈ´Ù. Á¤È®ÇÏ°Ô ÇÏ·Á¸é, ±× Áö¿ª¿¡ ¸Â´Â

Àϱ¤Àý¾à½Ã°£ÀÇ ¿¹Á¤¿¡ ±âÃÊÇÏ¿© ³¯Â¥¿Í ½Ã°£À» º¯°æÇؾßÇÑ´Ù. ±×·¸Áö¸¸, ½Ã½ºÅÛÀº ±× ¿¹Á¤ÀÌ ¾î¶»

°Ô º¯°æµÇ¾ú´ÂÁö¸¦ ´ç½ÅÀÌ ÁöÁ¤ÇÒ µµ±¸µéÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù. ´ç½ÅÀÌ À̰ÍÀ» ÇÒ ¼ö ÀÖ´Â °¡ÀåÁÁÀº

¹æ¹ýÀº ÇϳªÀÇ Æ¯º°ÇÑ ¿¹Á¤À» ÁöÁ¤Çؼ­ Çϴ°ÍÀÌ´Ù_º¸Åë ÇöÀçÀÇ ½Ã°£À» Ç¥½ÃÇϰí_¾Æ¹«·± ¹®Á¦°¡ ¾ø

À» ¶§, À̰ÍÀº ´Ù¸¥ ³¯Â¥·Î º¯°æÇϱâÀ§ÇØ »ç¿ëµÈ´Ù.

¼¼ ¹øÂ° Çü½ÄÀº ÀÌ¿Í °°´Ù.

:characters

°¢°¢ÀÇ ¿î¿µÃ¼Á¦¸¶´Ù ÀÌ Çü½ÄÀ» ´Ù¸£°Ô ÇØ¼®ÇÑ´Ù; GNU C ¶óÀ̺귯¸®¿¡¼­´Â, ¹®ÀÚµéÀº ½Ã°£´ë¸¦

Ç¥ÇöÇÏ´Â ÆÄÀÏÀÇ À̸§À¸·Î ÇØ¼®ÇÑ´Ù. ¸¸ÀÏ TZ ȯ°æº¯¼ö°¡ ¾Æ¹«·± °ªµµ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é, ±× ¿À

ÆÛ·¹À̼ÇÀº µðÆúÆ®·Î ½Ã°£´ë¸¦ Á¤ÇÑ´Ù. °¢ ¿î¿µÃ¼Á¦´Â µðÆúÆ® ½Ã°£´ë¸¦ Á¤Çϱâ À§ÇÑ Àڽųª¸§´ë·Î

ÀÇ ±ÔÄ¢À» °®°í ÀÖ°í, ±×·¡¼­ ¿ì¸®°¡ ±×µé¿¡ ´ëÇØ¼­ ¸»ÇÒ ¼ö ÀÖ´Â °ÍÀº Àû´Ù.

17.2.6 ½Ã°£´ë¸¦ À§ÇÑ ÇÔ¼ö¿Í º¯¼öµé.

º¯¼ö : char *tzname[2]

tzname ¹è¿­Àº »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ Ç¥ÁØ ½Ã°£´ë¿Í Àϱ¤Àý¾à½Ã°£´ëÀÇ À̸§µéÀ» Ç¥ÁØ ¼¼-¹®ÀÚ·Î °¡Áø µÎ

°³ÀÇ ¹®ÀÚ¿­À» ÀúÀåÇÑ´Ù. tzname[0]Àº Ç¥Áؽð£´ë(¿¹¸¦ µé¾î "EST")ÀÇ À̸§À̰í, tzname[1]Àº Àϱ¤

Àý¾à½Ã°£ÀÌ »ç¿ëµÉ ¶§ ½Ã°£´ë¸¦ À§ÇÑ À̸§ÀÌ´Ù(¿¹¸¦µé¾î, "EDT"). À̵éÀº TZ ȯ°æº¯¼ö·ÎºÎÅÍ std

¿Í dst¹®ÀÚ¿­°ú °°´Ù. tzname ¹è¿­Àº tzset, ctime, strftime, mktime, ¶Ç´Â localtimeÀÌ È£ÃâµÉ¶§¸¶´Ù

TZ ȯ°æº¯¼ö·Î ÃʱâÈ­µÈ´Ù.

ÇÔ¼ö : void tzset(void)

tzsetÇÔ¼ö´Â TZ ȯ°æº¯¼öÀÇ °ªÀ¸·Î tznameº¯¼ö¸¦ ÃʱâÈ­ÇÑ´Ù. À̰ÍÀº ½Ã°£´ë¿¡ ÀÇÁ¸ÇÏ´Â ´Ù¸¥ ½Ã°£

º¯È¯ ÇÔ¼öµé¿¡¼­ »ç¿ëµÉ ¶§ ÀÚµ¿ÀûÀ¸·Î È£ÃâµÇ±â ¶§¹®¿¡ ´ç½ÅÀÌ Á÷Á¢ ´ç½ÅÀÇ ÇÁ·Î±×·¥À» ÅëÇØ¼­ ÀÌ

°ÍÀ» ºÎ¸¦Çʿ䰡 ¾øÀ» °ÍÀÌ´Ù.

´ÙÀ½ÀÇ º¯¼öµéÀº À¯´Ð½º ½Ã½ºÅÛ V¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ­ Á¤ÀǵǾú´Ù. ÀÌµé º¯¼öµéÀ» localtime ÇÔ¼ö

¸¦ È£ÃâÇÔÀ¸·Î½á ¼³Á¤µÈ´Ù.

º¯¼ö : longint timezone

À̰ÍÀº ±×¸®´ÏÄ¡ Ç¥ÁØ½Ã¿Í Áö¿ª Ç¥ÁØ ½Ã°£»çÀÌÀÇ Â÷À̸¦ ÃÊ´ÜÀ§·Î ÀúÀåÇÑ´Ù. ¿¹¸¦ µé¾î, ¹Ì±¹¿¡¼­

µ¿ºÎ½Ã°£´ëÀÇ °ªÀº 5*60*60ÀÌ´Ù.

¿ªÀÚÁÖ : ¾Æ±î µ¿ºÎ½Ã°£´ë°¡ ±×¸®´ÏÄ¡ Ç¥ÁØ½Ã¿Í 5½Ã°£ÀÇ Â÷À̰¡ ³­´Ù°í ÇßÀ¸´Ï±î... 5*60*60.

º¯¼ö : int daylight

ÀÌ º¯¼ö´Â ¸¸ÀÏ Ç¥ÁØ ¹Ì±¹ Àϱ¤Àý¾à½Ã°£ ±ÔÄ¢ÀÌ Àû¿ëµÈ´Ù¸é 0ÀÌ ¾Æ´Ñ°ªÀ» °¡Áø´Ù.

17.2.7 ½Ã°£ ÇÔ¼öµéÀÇ ¿¹Á¦.

Áö¿ª½Ã°£°ú ´Þ·Â½Ã°£ ÇÔ¼öµéÀÇ ¸î°¡Áö¸¦ »ç¿ëÇÏ´Â ¿¹¸¦ º¸¿©ÁÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù.

#include <time.h>

#include <stdio.h>

#define SIZE 256

int

main (void)

{

char buffer[SIZE];

time_t curtime;

struct tm *loctime;

/* ÇöÀçÀÇ ½Ã°£À» ¾ò¾î¶ó */

curtime = time (NULL);

/* Áö¿ª½Ã°£ Ç¥ÇöÀ¸·Î º¯È¯Ç϶ó */

loctime = localtime (&curtime);

/* Ç¥ÁØ Çü½ÄÀ¸·Î ³¯Â¥¿Í ½Ã°£À» Ãâ·ÂÇ϶ó. */

fputs (asctime (loctime), stdout);

/* º¸±âÁÁÀº Çü½ÄÀ¸·Î ±×°ÍÀ» Ãâ·ÂÇ϶ó */

strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime);

fputs (buffer, stdout);

strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime);

fputs (buffer, stdout);

return 0;

}

´ÙÀ½°ú °°Àº Ãâ·ÂÀ» ¸¸µé¾î³½´Ù.

Wed Jul 31 13:02:36 1991

Today is Wednesday, July 31.

The time is 01:02 PM.

17.3 ¾Ë¶÷À» ¼³Á¤Çϱâ.

alarm °ú setitimer ÇÔ¼öµéÀº ¾î¶² ¹Ì·¡ÀÇ ½Ã°£¿¡ ÇÁ·Î¼¼½º ±× ÀÚü¿¡ ÀÎÅÍ·´Æ®¸¦ °Å´Â ¸ÞÄ«´ÏÁòÀ»

Á¦°øÇÑ´Ù. ±×µéÀº ŸÀ̸Ӹ¦ ¼³Á¤ÇÔÀ¸·Î½á ÀÌ·ç¾îÁø´Ù. ŸÀ̸Ӱ¡ ³¡³ª¸é, ÇÁ·Î¼¼½º´Â ½ÅÈ£¸¦ ¹Þ´Â´Ù.

°¢ ÇÁ·Î¼¼½º´Â À¯¿ëÇÑ ¼¼°¡Áö µ¶¸³ °£°Ý ŸÀ̸Ӹ¦ °®´Â´Ù.

? ½Ã°è ½Ã°£À» °è»êÇÏ´Â ½ÇÁ¦-½Ã°£ ŸÀ̸Ó. ÀÌ Å¸À̸Ӵ ±× ½Ã°£ÀÌ °æ°úµÇ¸é ÇÁ·Î

¼¼½º¿¡°Ô SIGALRM ½ÅÈ£¸¦ º¸³½´Ù.

? ÇÁ·Î¼¼½º¿¡ ÀÇÇØ »ç¿ëµÈ CPU½Ã°£À» ¼ÀÇÏ´Â °¡»ó ŸÀ̸Ó. ÀÌ Å¸À̸Ӵ ±× ½Ã°£ÀÌ

°æ°úµÇ¸é ÇÁ·Î¼¼½º¿¡°Ô SIGVTALRM ½ÅÈ£¸¦ º¸³½´Ù.

? profiling ŸÀ̸Ӵ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ »ç¿ëµÈ CPU ½Ã°£°ú ÇÁ·Î¼¼½º¸¦ À§ÇÑ ½Ã½ºÅÛ

È£Ãâ¿¡¼­ »ç¿ëµÈ CPU ½Ã°£ ¾çÂÊÀ» °è»êÇÑ´Ù.

ÀÌ Å¸À̸Ӵ ±× ½Ã°£ÀÌ °æ°úµÇ¾úÀ» ¶§, ÇÁ·Î¼¼½º¿¡°Ô SIGPROF ½ÅÈ£¸¦ º¸³½´Ù.

´ç½ÅÀº ¾î¶² Á¾·ù·Î ¼³Á¤µÈ ¾î´À ÁÖ¾îÁø ½Ã°£¿¡ ÇѰ¡ÁöÀÇ Å¸À̸Ӹ¸À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸¸ÀÏ ´ç½Å

ÀÌ ¾ÆÁ÷ °æ°úµÇÁö ¾ÊÀº ½Ã°£À» °¡Áø ŸÀ̸Ӹ¦ ¼³Á¤Çϸé, ±× ŸÀ̸Ӵ »õ·Î¿î °ªÀ¸·Î °£´ÜÈ÷ Àç¼³Á¤

µÈ´Ù. ´ç½ÅÀº setitimer À̳ª alarmÀ» È£ÃâÇϱâ Àü¿¡ signalÀ̳ª sigactionÀ» »ç¿ëÇØ¼­ Àû´çÇÑ ¾Ë¶÷

½ÅÈ£¸¦ À§ÇÑ Çڵ鷯¸¦ ¸¸µé¾î¾ß ÇÒ °ÍÀÌ´Ù. ±×·¸Áö¾Ê´Ù¸é, ½Ã°£ÀÌ °æ°úµÇ¾úÀ» ¶§ ¹ß»ýÇÒ ¼ö ÀÖ´Â »ç

°ÇµéÀÇ ¿¬°áÀº ¾Ë¶÷ ½ÅÈ£µé¿¡ ´ëÇÑ µðÆúÆ® µ¿ÀÛÀ¸·Î, ÇÁ·Î±×·¥ÀÇ Á¾°áÀ» ¹ß»ý½Ãų °ÍÀÌ´Ù. 21Àå.

[Signal Handling] 271ÆäÀÌÁö ÂüÁ¶.

setitimer ÇÔ¼ö´Â ¾Ë¶÷À» ¼³Á¤Çϱâ À§Çؼ­ ÁÖ¿äÇÑ ¹æ¹ýÀÌ´Ù. ÀÌ µµ±¸´Â Çì´õÆÄÀÏ `sys/time.h'¿¡ ¼±

¾ðµÇ¾î ÀÖ´Ù. ½ÇÁ¦-½Ã°£ ŸÀ̸Ӹ¦ ¼³Á¤Çϱâ À§Çؼ­ °£´ÜÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ´Â alarm ÇÔ¼ö´Â

`unistd.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

µ¥ÀÌÅÍŸÀÔ : struct itimerval

ÀÌ ±¸Á¶Ã¼´Â ŸÀ̸Ӱ¡ °æ°úµÇ´Â ¶§´Â Á¤Çϱâ À§Çؼ­ »ç¿ëµÇ¾îÁø´Ù. ±×°ÍÀº ´ÙÀ½°ú °°Àº ¸â¹öµéÀ»

Æ÷ÇÔÇϰí ÀÖ´Ù.

struct timeval it_interval

À̰ÍÀº ¿¬¼ÓÀûÀΠŸÀÌ¸Ó ÀÎÅÍ·´Æ®µé »çÀÌÀÇ °£°ÝÀÌ´Ù. ¸¸ÀÏ 0À̸é, alarmÀº ¿ÀÁ÷ ÇÑ ¹ø¸¸ º¸³»Áú°Í

ÀÌ´Ù.

struct timeval it_value

À̰ÍÀº ù ¹øÂ° ŸÀÌ¸Ó ÀÎÅÍ·´Æ® °£°ÝÀÌ´Ù. ¸¸ÀÏ 0À̸é, ¾Ë¶÷Àº ºÒ°¡´ÉÇÏ´Ù.

µ¥ÀÌÅÍŸÀÔ struct timevalÀº 17.2.2Àý [High-Resolution Calendar] 235 ÆäÀÌÁö¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

ÇÔ¼ö :

int setitimer(int which, struct itimerval *old, struct itimerval *new )

setitimer ÇÔ¼ö´Â new¿¡ µû¸¥°Í¿¡ ÀÇÇØ Á¤ÇØÁø ŸÀ̸Ӹ¦ ¼³Á¤ÇÑ´Ù. which Àμö´Â ITIMER_REAL,

ITIMER_VIRTUAL, ¶Ç´Â, ITIMER_PROF ÁßÀÇ ÇѰªÀ» °¡Áú ¼ö ÀÖ´Ù. ¸¸ÀÏ old°¡ ³Î Æ÷ÀÎÅͰ¡ ¾Æ´Ï

¶ó¸é, setitimer Àº ±×°ÍÀÌ °¡¸®Å°°í ÀÖ´Â ±¸Á¶Ã¼¿¡ °°Àº Á¾·ùÀÇ Àü¿¡ °æ°úµÇÁö ¾Ê¾Ò´ø ¾î´À ŸÀ̸Ó

¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù. ¼º°øÇÏ¸é ¸®ÅϰªÀº 0À̰í, ½ÇÆÐÇϸé -1ÀÌ´Ù.

´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ´Ù.

EINVAL

ŸÀ̸ÓÀÇ °£°ÝÀÌ ³Ê¹« ±æ¾ú´Ù.

ÇÔ¼ö : int getitimer(int which, struct itimerval *old)

getitimer ÇÔ¼ö´Â old°¡ °¡¸®Å°°í ÀÖ´Â ±¸Á¶Ã¼¿¡ÀÇÇØ Á¤ÇØÁø ŸÀ̸ӿ¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇÑ´Ù. ¸®ÅÏ

°ª°ú ¿¡·¯»óȲµéÀº setitimer°ú °°´Ù.

ITIMER_REAL

ÀÌ »ó¼ö´Â ½ÇÁ¦-½Ã°£ ŸÀ̸ӷΠÁ¤Çϱâ À§Çؼ­, setitimer°ú getitimer ÇÔ¼öµé¿¡¼­ which Àμö·Î½á »ç

¿ëµÉ ¼ö ÀÖ´Ù.

ITIMER_VIRTUAL

ÀÌ »ó¼ö´Â °¡»ó ŸÀ̸ӷΠÁ¤Çϱâ À§Çؼ­, setitimer°ú getitimer ÇÔ¼öµé¿¡¼­ which Àμö·Î½á »ç¿ëµÉ

¼ö ÀÖ´Ù.

ITIMER_PROF

ÀÌ »ó¼ö´Â profiling ŸÀ̸ӷΠÁ¤Çϱâ À§Çؼ­, setitimer°ú getitimer ÇÔ¼öµé¿¡¼­ which Àμö·Î½á »ç¿ë

µÉ ¼ö ÀÖ´Ù.

ÇÔ¼ö : unsigned int alarm(unsigned int seconds)

alarm ÇÔ¼ö´Â ÃÊ´ÜÀ§·Î seconds°¡ °æ°úµÇµµ·Ï ½ÇÁ¦-½Ã°£ ŸÀ̸Ӹ¦ ¼³Á¤ÇÑ´Ù. ¸¸ÀÏ ´ç½ÅÀÌ ÇöÁ¸ÇÏ´Â

alarmÀ» Ãë¼ÒÇÏ±æ ¿øÇÑ´Ù¸é, ´ç½ÅÀº seconds Àμö¸¦ 0À¸·Î ÇØ¼­ alarmÀ» È£ÃâÇÏ¸é µÈ´Ù. ¸®ÅϰªÀº

¹Ì¸® È£ÃâµÆ´ø alarm¿¡¼­ ¸îÃʰ¡ ³²¾Ò´ÂÁö¸¦ °¡¸®Å²´Ù. ¸¸ÀÏ ¹Ì¸® È£ÃâµÈ alarmÀÌ ¾ø´Ù¸é, alarmÀº

0À» ¸®ÅÏÇÑ´Ù. alarmÇÔ¼ö´Â ÀÌó·³ setitimer¿¡ ÀÇÇÏ¿© Á¤ÀÇµÉ ¼ö ÀÖ´Ù.

unsigned int

alarm (unsigned int seconds)

{

struct itimerval old, new;

new.it_interval.tv_usec = 0;

new.it_interval.tv_sec = 0;

new.it_value.tv_usec = 0;

new.it_value.tv_sec = (long int) seconds;

if (setitimer (ITIMER_REAL, &new, &old) < 0)

return 0;

else

return old.it_value.tv_sec;

}

alarm ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ¿¹´Â 21.4.1Àý [Handler Returns] 285 ÆäÀÌÁö¿¡¼­ º¸¿©ÁÖ°í ÀÖ´Ù. ¸¸ÀÏ ´ç

½ÅÀÌ ÁÖ¾îÁø ½Ã°£(ÃÊ´ÜÀ§ÀÇ)µ¿¾È ´ç½ÅÀÇ ÇÁ·Î¼¼½º°¡ ±â´Ù¸®±â¸¦ ¿øÇÑ´Ù¸é sleep ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö

ÀÖÀ» °ÍÀÌ´Ù. 17.4Àý[Sleeping] 244 ÆäÀÌÁö ÂüÁ¶.

´ç½ÅÀº ŸÀ̸Ӱ¡ °æ°úµÇ¾úÀ» ¶§, Á¤È®ÇÏ°Ô µµÂøµÈ ½ÅÈ£¸¦ ¼¿¼ö¾øÀ» °ÍÀÌ´Ù.

¸ÖƼÇÁ·Î¼¼½Ì ȯ°æ¿¡¼­´Â ¾î´ÀÁ¤µµÀÇ Áö¿¬ÀÌ Àֱ⠶§¹®ÀÌ´Ù.

À̽ļº ³ëÆ®: setitimer ¿Í getitimer ÇÔ¼öµéÀº BSD Unix·ÎºÎÅÍ ¿Ô°í, alarm ÇÔ¼ö´Â POSIX.1 Ç¥ÁØ

À¸·Î Á¤ÇØÁ®ÀÖ´Ù. setitimer Àº alarmº¸´Ù´Â ´õ °­·ÂÇÏÁö¸¸, alarmÀÌ ´õ ±¤¹üÀ§ÇÏ°Ô ¾²ÀδÙ.

17.4 Sleeping

sleep ÇÔ¼ö´Â ªÀº ½Ã°£µ¿¾È ±× ÇÁ·Î±×·¥À» ±â´Ù¸®°Ô ÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ¸¸ÀÏ ´ç½ÅÀÇ

ÇÁ·Î±×·¥ÀÌ ½ÅÈ£µéÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é( Á¾·á¸¦ Á¦¿ÜÇϰí), ´ç½ÅÀº sleep°¡ Á¤ÇØÁø ½Ã°£µ¿¾È¿¡ È®½Ç

ÇÏ°Ô ±â´Ù¸°´Ù´Â °ÍÀ» ±â´ëÇÒ ¼ö ÀÖ´Ù. ±×·¸Áö ¾Ê´Ù¸é, sleep´Â ¸¸ÀÏ ½ÅÈ£°¡ µµÂøÇÑ´Ù¸é °ð¹Ù·Î ¸®

Å쵃 ¼ö ÀÖ´Ù; ¸¸ÀÏ ´ç½ÅÀÌ ½ÅÈ£¿¡ »ó°ü¾øÀÌ ÁÖ¾îÁø ½Ã°£µ¿¾È ±â´Ù¸®±â¸¦ ¿øÇÑ´Ù¸é select( 8.6Àý

[Waiting for I/O], 111 ÆäÀÌÁö ÂüÁ¶.)¸¦ »ç¿ëÇϰí, ±â´Ù¸®´Â ¾î¶°ÇÑ ±â¼úÀÚµµ ÁöÁ¤ÇÏÁö ¸»¾Æ¶ó.

ÇÔ¼ö : unsigned int sleep (unsigned int seconds)

sleep ÇÔ¼ö´Â secondsµ¿¾È ±â´Ù¸®°Å³ª, ù ¹øÂ° ¹ß»ýÇÑ ½ÅÈ£°¡ µµÂøµÉ¶§±îÁö ±â´Ù¸°´Ù. ¸¸ÀÏ sleep

ÇÔ¼ö°¡ ¿äûµÈ ½Ã°£ÀÌ °æ°úµÇ¾ú±â ¶§¹®¿¡ ¸®ÅÏÇß´Ù¸é, ¸®ÅϰªÀº 0ÀÌ´Ù. ¸¸ÀÏ ½ÅÈ£°¡ µµÂøµÇ¾î¼­ ¸®

ÅÏÇß´Ù¸é, ±× ¸®ÅϰªÀº ¾ÆÁ÷ °æ°úµÇÁö ¾Ê°í ³²Àº ½Ã°£ÀÇ °ªÀÌ´Ù. sleep ÇÔ¼ö´Â `unistd.h'¿¡ ¼±¾ðµÇ¾î

ÀÖ´Ù.

sleep°¡ 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇßÀ» ¶§, ±× ¸®ÅϰªÀ» »ç¿ëÇØ¼­ Á¤ÇØÁø ½Ã°£µ¿¾È ´Ù½Ã ±â´Ù¸®µµ·Ï sleep

¸¦ ÀçÈ£ÃâÇÏ·Á´Â À¯È¤¿¡ ÀúÇ×Ç϶ó. À̰ÍÀº ºó¹øÇÏ°Ô µµÂøÇÑ ½ÅÈ£µé¸¸Å­ Á¤È®ÇÏ°Ô ±æ¾îÁø ¾î¶² ½Ã°£

µ¿¾È ÀÛ¾÷ÇÒ °ÍÀÌ´Ù. ±×·¯³ª °¢ ½ÅÈ£´Â ±× ºÎ°¡ÀûÀÎ ½Ã°£(ÃÊ)À¸·Î ÀÎÇØ¼­ ¿ø·¡ Á¤ÇØÁø ±â´Ù¸²ÀÇ ½Ã

°£º¸´Ù ±æ¾îÁö°Ô ÇÒ °ÍÀÌ´Ù. ±â´Ù¸²ÀÌ ¾ó¸¶³ª ±æ¾îÁö°Å³ª, ª¾ÆÁú¼ö ÀÖ´ÂÁö¿¡ ´ëÇÑ ¾Æ¹«·± Á¦ÇÑÀÌ

¾ø´Â ¾î¶² ½ÅÈ£µéÀÌ ºÒÇàÇϰԵµ ºü¸£°Ô ¿¬¼ÓÀûÀ¸·Î ¹ß»ýÇÑ ´Ù°í °¡Á¤Ç϶ó.

´ë½Å¿¡, ±× ÇÁ·Î±×·¥ÀÌ ±â´Ù¸²À» ¸ØÃß°Ô µÈ ±× ½Ã°£À» °è»êÇϰí, ´Ù½Ã ³²¾ÆÀÖ´Â ½Ã°£µ¿¾È ±â´Ù¸²À»

´Ù½Ã ½ÃµµÇϵµ·Ï Ç϶ó. À̰ÍÀº 1Ãʺ¸´Ùµµ ´õ ¸¹ÀÌ ½Ã°£Â÷À̰¡ ³ªÁö ¾ÊÀ» °ÍÀÌ´Ù. ´õ ÀûÀº ½Ã°£µ¿¾È

ÀÛ¾÷ÇÏ·Á¸é, ´ç½ÅÀº select¸¦ »ç¿ëÇϰí, ²Ï Á¤È®ÇÑ ½Ã°£µ¿¾È ±â´Ù¸®°Ô ÇÒ ¼ö ÀÖ´Ù. ( ¹°·Ð, ¸ÖƼÀ¯Àú

½Ã½ºÅÛ¿¡¼­ ±× ±â°è°¡ ´ÜÁö ÇÑ ÀÀ¿ëÇÁ·Î±×·¥À» À§Çؼ­ »ç¿ëµÇÁö ¾Ê´Â´Ù¸é, ÇÇÇÒ¼ö ¾ø´Â ºÎ°¡ÀûÀÎ Áö

¿¬À» ¹ß»ýµÉ °ÍÀÌ´Ù, ´ç½ÅÀÌ ±×°ÍÀ» ÇÇÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¾Æ¹«°Íµµ ¾ø´Ù. )

¾î¶² ½Ã½ºÅÛ»ó¿¡¼­, ¸¸ÀÏ ´ç½ÅÀÇ ÇÁ·Î±×·¥¿¡¼­ SIGALRMÀ» »ç¿ëÇÑ´Ù¸é sleep´Â ÀÌ»óÇÏ°Ô µ¿ÀÛÇÒ¼ö

ÀÖ´Ù. ½ÉÁö¾î sleep°¡ È£ÃâµÇ¾úÀ» ¶§ SIGALRM ½ÅÈ£°¡ ¹«½ÃµÇ°Å³ª ºí·ÏµÈ´Ù¸é, sleep´Â SIGALRM

½ÅÈ£ ¶§¹®¿¡ ½Ã±â»óÁ¶ÀûÀ¸·Î ¸®Å쵃 °ÍÀÌ´Ù. ¸¸ÀÏ ´ç½ÅÀÌ ÇÁ·Î¼¼½º°¡ ±â´Ù¸®°í ÀÖ´Â(sleeping)µ¿¾È

¹è´ÞµÈ SIGALRM ½ÅÈ£¿Í SIGALRM ½ÅÈ£¸¦ À§ÇÑ Çڵ鷯¸¦ ¸¸µé¾ú´Ù¸é, ±× µ¿ÀÛÀº´ç½ÅÀÌ ¸¸µç ½ÅÈ£

Çڵ鷯¿¡ ±× 󸮸¦ ¸Ã±â´Â ´ë½Å¿¡ sleepÀÇ ¸®ÅÏÀ» ¹ß»ý½Ãų °ÍÀÌ´Ù. ±×¸®°í ¸¸ÀÏ sleep°¡ alarmÀ»

¿äûÇϰųª SIGALRMÀÇ Ã³¸®¸¦ ¼±ÅÃÇÏ´Â Çڵ鷯°¡ °¡Áø ½ÅÈ£¿¡ ÀÇÇØ ÀÎÅÍ·´Æ®µÈ´Ù¸é, ÀÌ Çڵ鷯¿Í

sleep´Â ¹æÇصɰÍÀÌ´Ù.

GNU ½Ã½ºÅÛ¿¡¼­´Â, sleep°¡ SIGALRM¿¡ ÀÇÇÏ¿© ÀÛ¾÷ÇÏÁö ¾Ê±â ¶§¹®¿¡, sleep¿Í SIGALRMÀ» °°Àº

ÇÁ·Î±×·½¿¡¼­ »ç¿ëÇÏ´Â °ÍÀÌ ¾ÈÀüÇÑ´Ù.

17.5 ÀÚ¿ø »ç¿ë.

ÇÔ¼ö getrusage ¿Í µ¥ÀÌÅÍŸÀÔ struct rusage´Â ÇÁ·Î¼¼½ºÀÇ »ç¿ëÇüŸ¦ ½ÃÇèÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù.

±×µéÀº `sys/resource.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

ÇÔ¼ö : int getrusage(int processes, struct rusage *rusage)

ÀÌ ÇÔ¼ö´Â processes¿¡ ÀÇÇØ Á¤ÇØÁø ±× ÇÁ·Î¼¼½º¸¦ À§ÇØ »ç¿ëµÈ °ÍÀ» *rusage¿¡ Á¤º¸¸¦ ÀúÀåÇÏ¿©,

º¸°íÇÑ´Ù. ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­, processes´Â ¿ÀÁ÷ µÎ °³ÀÇ À¯¿ëÇÑ °ªÀ» °¡Áø´Ù:

RUSAGE_SELF

´ÜÁö ÇöÀçÀÇ ÇÁ·Î¼¼½º.

RUSAGE_CHILDREN

ÀÌ¹Ì Á¾·áµÈ ¸ðµç ÀÚ½Ä ÇÁ·Î¼¼½º(Á÷Á¢ °ú °£Á¢).

GNU ½Ã½ºÅÛ¿¡¼­, ÇÁ·Î¼¼½º ID¸¦ Á¤ÇÔÀ¸·Î ÇØ¼­, ƯÁ¤ÇÑ ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ ´ëÇØ¼­ Á¶»çÇÒ ¼ö ÀÖ´Ù.

getrusageÀÇ ¸®ÅϰªÀº ¼º°øÇϸé 0À̰í, ½ÇÆÐÇϸé -1ÀÌ´Ù.

EINVAL

processes Àμö°¡ À¯¿ëÇÏÁö ¾Ê´Ù.

ƯÁ¤ÇÑ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ À§ÇÑ »ç¿ëÇüŸ¦ ¾ò´Â ¹æ¹ýÀº wait4 ÇÔ¼ö¸¦ ÅëÇØ¼­ ÇÒ ¼ö Àִµ¥, ±× ÇÔ¼ö

´Â ÀÚ½Ä ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾úÀ» ¶§ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ À§ÇÑ ¸ðµç °ÍÀ» ¸®ÅÏÇÑ´Ù. 23.8Àý [BSD Wait

Functions] 332 ÆäÀÌÁö ÂüÁ¶.

µ¥ÀÌÅÍŸÀÔ : struct rusage

ÀÌ µ¥ÀÌÅÍŸÀÔÀº ´Ù¾çÇÑ Á¾·ùÀÇ ÀÚ¿ø¿¡ ´ëÇÑ »ç¿ë·®À» ±â·ÏÇÑ´Ù. À̰ÍÀº ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» °®À¸

¸ç, ´Ù¸¥°Íµµ °¡´ÉÇÏ´Ù.

struct timeval ru_utime »ç¿ëµÈ »ç¿ëÀÚ ½Ã°£.

struct timeval ru_stime »ç¿ëµÈ ½Ã½ºÅÛ ½Ã°£.

long ru_majflt ÆäÀÌÁö ÆúÆ®ÀÇ °³¼ö.

long ru_inblock ºí·ÏµÈ ÀÔ·Â ¸í·ÉÀÇ °³¼ö.

long ru_oublock ºí·ÏµÈ Ãâ·Â ¸í·ÉÀÇ °³¼ö.

long ru_msgsnd º¸³Â´ø ¸Þ½ÃÁöÀÇ °³¼ö.

long ru_msgrcv ¹Þ¾Ò´ø ¸Þ½ÃÁöÀÇ °³¼ö.

long ru_nsignals ¹Þ¾Ò´ø ½Ã±×³¯ÀÇ °³¼ö.

»ç¿ëÇüŸ¦ ½ÃÇèÇÏ´Â ÇÔ¼ö·Î´Â vtimesµµ ÀÖÁö¸¸ ¿©±â¼­ ¼³¸íÇÏÁö´Â ¾Ê´Â´Ù.±×°ÍÀº `sys/vtimes.h'¿¡

¼±¾ðµÇ¾î ÀÖ´Ù.

17.6 Á¦ÇÑµÈ ÀÚ¿ø »ç¿ë.

´ç½ÅÀº ÇÁ·Î¼¼½ºÀÇ ÀÚ¿ø »ç¿ë¿¡ ´ëÇØ¼­ Á¦ÇÑÀ» °¡ÇÒ ¼ö ÀÖ´Ù. ±× ÇÁ·Î¼¼½º°¡ Á¦ÇÑÀ» ³Ñ¾î¼­·Á ½Ã

µµÇÒ ¶§, Á¦ÇÑ¿¡ µû¶ó¼­ ±× ÇÁ·Î¼¼½º´Â ½ÅÈ£¸¦ ¹Þ°Å³ª, ¾Æ´Ï¸é ½ÃµµÇß´ø°ÍÀÇ ½ÇÆÐ·Î ÀÎÇÑ ½Ã½ºÅÛ È£

ÃâÀÌ µÉ °ÍÀÌ´Ù. °¢ ÇÁ·Î¼¼½º´Â ±× ºÎ¸ð ÇÁ·Î¼¼½º·ÎºÎÅÍ Ã³À½¿¡´Â Á¦ÇÑÀ» »ó¼Ó¹ÞÁö¸¸, ±×ÈÄ¿¡´Â ±×

µéÀ» º¯°æ ÇÒ ¼ö ÀÖ´Ù.

ÀÌ Àý¿¡ ÀÖ´Â ½Éº¼µéÀº `sys/resource.h'¿¡ Á¤ÀǵǾî ÀÖ´Ù.

ÇÔ¼ö : int getrlimit(int resource, struct rlimit *rlp)

ÀÚ¿ø resourceÀÇ ÇöÀç°ª°ú ÃÖ´ë°ªÀ» Àаí, ±×µéÀ» *rlp¿¡ ÀúÀåÇÑ´Ù. ¼º°øÇÏ¸é ¸®ÅϰªÀº 0ÀÌ°í ½ÇÆÐÇÏ

¸é -1ÀÌ´Ù. ¹ß»ý °¡´ÉÇÑ ¿¡·¯ »óȲÀº EFAULT»ÓÀÌ´Ù.

ÇÔ¼ö : int setrlimit(int resource, struct rlimit *rlp)

*rlp¿¡ ÀÖ´Â °ÍÀ¸·Î ÀÚ¿ø resourceÀÇ ÇöÀç°ª°ú ÃÖ´ë°ªÀ» ¼³Á¤ÇÑ´Ù. ¼º°øÇÏ¸é ¸®ÅϰªÀº 0ÀÌ°í ½ÇÆÐÇÏ

¸é -1ÀÌ´Ù. ´ÙÀ½ÀÇ errno´Â °¡´ÉÇÑ ¿¡·¯»óȲÀÌ´Ù.

EPERM

´ç½ÅÀÌ Çã¿ëµÈ ÃÖ´ë Á¦ÇѰªÀ» º¯°æÇÏ·Á ½ÃµµÇßÁö¸¸, ´ç½ÅÀº ±×·¸°Ô ÇÒ¸¸ÇÑ Æ¯±ÇÀ» ºÎ¿©¹ÞÁö ¾Ê¾Ò´Ù.

µ¥ÀÌÅÍŸÀÔ : struct rlimit

ÀÌ ±¸Á¶Ã¼´Â Á¦ÇѰªµéÀ» ¹Þ±âÀ§Çؼ­ getrlimit¿¡¼­ »ç¿ëµÇ°í, Á¦ÇѰªµéÀ» Á¤Çϱâ À§Çؼ­ setrlimit¿¡¼­

»ç¿ëµÈ´Ù. µÎ °³ÀÇ Çʵ带 °®´Â´Ù.

rlim_cur

Áú¹®¿¡ ´ëÇÑ Á¦ÇÑÀÇ ÇöÀç°ª.

rlim_max

Áú¹®¿¡ ´ëÇÑ Á¦ÇÑÀÇ ÃÖ´ë Çã¿ë°ª. ´ç½ÅÀº ÀÌ ÃÖ´ë°ª º¸´Ù Å«¼ö·Î Á¦ÇÑÀÇ ÇöÀç°ªÀ» ¼³Á¤ÇÒ ¼ö ¾ø´Ù.

¿ÀÁ÷ ½´ÆÛ À¯Àú¸¸ÀÌ ÃÖ´ë Çã¿ë°ªÀ» º¯°æÇÒ ¼ö ÀÖ´Ù.

getrlimit¿¡¼­ ±× ±¸Á¶Ã¼´Â Ãâ·ÂÀ¸·Î¼­, ÇöÀç°ªµéÀ» ¹Þ´Â´Ù. setrlimit¿¡¼­ ±× ±¸Á¶Ã¼´Â »õ·Î¿î °ªµé

À» Á¤Çϴµ¥ »ç¿ëµÈ´Ù. ´ç½ÅÀÌ Á¦ÇÑÀ» Á¤ÇÒ ¼ö ÀÖ´Â ÀÚ¿øÀÇ ¸®½ºÆ®ÀÌ´Ù. ±×µéÀº ¹ÙÀÌÆ®·Î °è»êµÈ Å©

±âÀÌ´Ù.

RLIMIT_CPU

±× ÇÁ·Î¼¼½º°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â cpu timeÀÇ ÃÖ´ë·®. ¸¸ÀÏ À̰ͺ¸´Ù ´õ ±æ°Ô ½ÇÇàÇÑ´Ù¸é, SIGXCPU

¶ó´Â ½ÅÈ£°¡ ¹ß»ýÇÑ´Ù. °ªÀº ÃÊ´ÜÀ§·Î °è»êµÈ °ÍÀÌ´Ù. 21.2.7Àý [Nonstandard Signals] 278 ÆäÀÌÁö

ÂüÁ¶.

RLIMIT_FSIZE

±× ÇÁ·Î¼¼½º°¡ ¸¸µé ¼ö ÀÖ´Â ÆÄÀÏÀÇ ÃÖ´ë Å©±â. À̰ͺ¸´Ù

Å« ÆÄÀÏÀ» ¸¸µé·ÁÇϸé SIGXFSZ¶ó´Â ½ÅÈ£°¡ ¹ß»ýµÈ´Ù.

21.2.7Àý [Nonstandard Siganls] 278 ÆäÀÌÁö ÂüÁ¶.

RLIMIT_DATA

ÇÁ·Î¼¼½º°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍ ¸Þ¸ð¸®ÀÇ ÃÖ´ëÅ©±â.

¸¸ÀÏ ±× ÇÁ·Î¼¼½º°¡ ÀÌ ¾çÀ» ÃʰúÇÏ´Â µ¥ÀÌÅÍ ¸Þ¸ð¸®¸¦

ÇÒ´çÇÏ·Á ½ÃµµÇÏ¸é ±× ÇÒ´çÀº ½ÇÆÐÇÑ´Ù.

RLIMIT_STACK

ÇÁ·Î¼¼½º¸¦ À§ÇÑ ÃÖ´ë ½ºÅØ Å©±â. ¸¸ÀÏ ÇÁ·Î¼¼½º°¡ ÀÌ Å©±âº¸´Ù Å©°Ô ½ºÅÃÀ» È®ÀåÇÏ·Á ½ÃµµÇÑ´Ù¸é,

SIGSEGV ½ÅÈ£°¡ ¹ß»ýµÈ´Ù. 21.2.1Àý [Program Error Signals] 273 ÆäÀÌÁö ÂüÁ¶.

RLIMIT_CORE

ÀÌ ÇÁ·Î¼¼½º°¡ ¸¸µé ¼ö ÀÖ´Â ÃÖ´ë Å©±â ÄÚ¾Æ ÆÄÀÏ. ¸¸ÀÏ ÇÁ·Î¼¼½º°¡ Á¾·áµÇ°í ÄÚ¾îÆÄÀÏÀÌ ¸¸µé¾îÁ³

°í, ÀÌ ÃÖ´ëÅ©±â°¡ ÃæºÐÇÏÁö ¾Ê´Ù¸é, ÄÚ¾ÆÆÄÀÏÀº Àß·ÁÁø´Ù.

RLIMIT_RSS

ÀÌ ÇÁ·Î¼¼½º°¡ ¾òÀ» ¼ö ÀÖ´Â ¹°¸®Àû ¸Þ¸ð¸®ÀÇ ÃÖ´ë·®. ÀÌ ¼öÄ¡´Â ½Ã½ºÅÛ ½ºÄÉÁì·¯¿Í ¸Þ¸ð¸® ÇÒ´çÀÚ

¸¦ À§ÇÑ Á¤º¸°¡ µÈ´Ù; ½Ã½ºÅÛÀº ¸Þ¸ð¸®°¡ ³²¾ÆÀÖ´Â ¾çÀÌ ÀÖÀ» ¶§ ±× ÇÁ·Î¼¼½º¿¡°Ô ´õ ¸¹Àº ¸Þ¸ð¸®

¸¦ ÁÙ ¼öµµ ÀÖ´Ù.

RLIMIT_OPEN_FILES

ÇÁ·Î¼¼½º°¡ °³¹æÇÒ ¼ö ÀÖ´Â ÆÄÀÏÀÇ ÃÖ´ë°³¼ö. ¸¸ÀÏ À̰ͺ¸´Ù ´õ ¸¹ÀÌ °³¹æÇÏ·Á ÇÑ´Ù¸é, EMFILE¶ó

´Â ¿¡·¯Äڵ尡 ¹ß»ýµÈ´Ù. 2.2Àý [Error Codes] 12 ÆäÀÌÁö ÂüÁ¶.

RLIM_NLIMITS

´Ù¸¥ ÀÚ¿ø Á¦ÇÑÀÇ °³¼ö. ¾î´À À¯¿ëÇÑ ÀÚ¿ø ÇÇ¿¬»êÀÚ´Â RLIM_NMLIMITSº¸´Ù ÀûÀ»°ÍÀÓÀÌ Æ²¸²¾ø

´Ù.

»ó¼ö : int RLIM_INFINITY

ÀÌ »ó¼ö´Â setrlimit¿¡¼­ Á¦ÇѰªÀ¸·Î »ç¿ëµÉ ¶§ "¹«ÇÑ´ë"ÀÇ °ªÀ» ³ªÅ¸³½´Ù.

ÀÚ¿ø Á¦ÇÑÀ» ¼³Á¤ÇÏ´Â ÇÔ¼ö´Â ulimit¿Í vlimit°¡ ÀÖÁö¸¸ ¿©±â¼­ ¼³¸íµÇÁö ¾Ê¾Ò´Ù. vlimit´Â

`sys/vlimit.h'¿¡ ¼±¾ðµÇ¾î ÀÖ°í BSD·ÎºÎÅÍ ¿Ô´Ù.

17.7 ÇÁ·Î¼¼½º ¿ì¼±±Ç.

¿©·¯°³ÀÇ ÇÁ·Î¼¼½ºµéÀÌ ½ÇÇàÇÏ·Á ½ÃµµµÉ ¶§, ±×µé °¢°¢ÀÌ °¡Áø ¿ì¼±±ÇÀÌ ±× ÇÁ·Î¼¼½º°¡ °¡Á®°¥

CPUÀÇ ºÐÇÒÀ» °áÁ¤ÇÑ´Ù. ÀÌ ÀýÀº ´ç½ÅÀÌ ¾î¶»°Ô ÇÁ·Î¼¼½ºÀÇ ¿ì¼±±ÇÀ» ¾Ë¾Æ³»°í ¼³Á¤ÇÒ ¼ö ÀÖ´ÂÁö

¸¦ ¼³¸íÇÑ´Ù. À̵é ÇÔ¼öµé°ú ¸ÅÅ©·Î ¸ðµÎ´Â `sys/resource.h¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

À¯¿ëÇÑ ¿ì¼±±Ç°ªµéÀÇ ¹üÀ§´Â ¿î¿µÃ¼Á¦¿¡ ÀÇÁ¸µÇÁö¸¸, ÀϹÝÀûÀ¸·Î -20¿¡¼­ 20±îÁö¿¡¼­ ½ÇÇàµÈ´Ù.

³·Àº ¿ì¼±±Ç°ªÀº ±× ÇÁ·Î¼¼½º°¡ ´õ ÀÚÁÖ ½ÇÇàµÊÀ» ÀǹÌÇÑ´Ù. ÀÌµé »ó¼öµéÀº ¿ì¼±±Ç °ªµéÀÇ ¹üÀ§¸¦

¼³¸íÇÑ´Ù.

PRIO_MIN

À¯¿ëÇÑ ¿ì¼±±ÇÀÇ °¡Àå ÀÛÀº°ª.

PRIO_MAX

À¯¿ëÇÑ ¿ì¼±±ÇÀÇ °¡Àå Å«°ª.

** ¿ªÀÚÁÖ : ¿ø¼­¿¡´Â PRIO_MAX¿¡ The smallest¶ó°í µÇ¾î ÀÖ¾ú½À´Ï´Ù. ÇÏÁö¸¸ Àú´Â Ʋ·È´Ù´Â ÆÇ

´ÜÀ» °®°í largest¶ó°í °íÃÆÀ½À» ¾Ë·Á µå¸³´Ï´Ù.

ÇÔ¼ö : int getpriority(int class, int id)

ÇÁ·Î¼¼½ºµé classÀÇ ¿ì¼±±ÇÀ» Àд´Ù; class¿Í id´Â ¹Ø¿¡ ÀÖ´Â °Í Áß¿¡ ÇѰ¡Áö·Î Á¤ÇÑ´Ù. ¼º°øÇϸé

¸®ÅϰªÀ» ¿ì¼±±Ç°ªÀ̰í, ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¿¡¼­ °¡´ÉÇÑ ¿¡·¯»óȲÀÌ

´Ù.

ESRCH

class¿Í idÀÇ Á¶ÇÕÀÌ ÇöÁ¸Çϰí ÀÖ´Â ¾î¶² ÇÁ·Î¼¼½º¿Í

µµ ¸ÂÁö°¡ ¾Ê´Â´Ù.

EINVAL

classÀÇ °ªÀÌ À¯¿ëÇÏÁö ¾Ê´Ù.

¸®ÅϰªÀÌ -1ÀÏ ¶§, ±×°ÍÀº ½ÇÆÐÇßÀ½À» ¾Ë¸®°Å³ª, ¶Ç´Â ±×°ÍÀÌ ¿ì¼±±ÇÀÇ °ªÀÌ µÉ ¼ö ÀÖ´Ù. ÀÌ·²¶§¸¦

´ëºñÇÑ Á¤È®ÇÑ ¹æ¹ýÀº getpriority¸¦ È£ÃâÇϱâ Àü¿¡ errno = 0À¸·Î ¼³Á¤À» ÇØ³õÀ¸¸é, ½ÇÆÐ¸¦ ÆÇ´ÜÇÏ´Â

Á¶°ÇÀ¸·Î errno != 0 À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÇÔ¼ö : int setpriority(int class, int id, int priority)

ÇÁ·Î¼¼½ºµé classÀÇ ¿ì¼±±ÇÀ» Àд´Ù(¼³Á¤ÇÑ´Ù.); class ¿Í id´Â ¹Ø¿¡ °ÍÁß¿¡ Çϳª·Î ¼³Á¤ÇÑ´Ù. ¼º°ø

ÇÏ¸é ¸®ÅϰªÀº 0ÀÌ°í ½ÇÆÐÇϸé -1ÀÌ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ´Ù.

** ¿ªÀÚÁÖ : ¿ª½Ã À̰÷¿¡¼­µµ ¹®¸Æ»ó Read°¡ ¸ÂÁö°¡ ¾Ê½À´Ï´Ù. Ã¥¿¡´Â Read¶ó°í ³ª¿ÍÀÖÁö¸¸, ÇÔ¼ö

À̸§À̳ª, ´ÙÀ½ ¹®ÀåµéÀ» Âü°í·Î º¸°Çµ¥ Àú´Â SetÀÌ ¸Â´Ù°í »ý°¢ÇÕ´Ï´Ù.

ESRCH

class¿Í idÀÇ Á¶ÇÕÀÌ ÇöÁ¸ÇÏ´Â ¾î¶² ÇÁ·Î¼¼½º¿Íµµ ¸ÂÁö°¡ ¾Ê´Â´Ù.

EINVAL

classÀÇ °ªÀÌ À¯¿ëÇÏÁö ¾Ê´Ù.

EPERM

´ç½ÅÀÌ ´Ù¸¥ »ç¿ëÀÚÀÇ ÇÁ·Î¼¼½ºÀÇ ¿ì¼±±ÇÀ» ¼³Á¤ÇÏ·Á ½ÃµµÇÏ¿´°í, ´ç½ÅÀº ±×°ÍÀ» À§ÇÑ Æ¯±ÇÀ» °¡Áö

Áö ¾Ê¾Ò´Ù.

EACCES

´ç½ÅÀÌ ¾î¶² ÇÁ·Î¼¼½ºÀÇ ¿ì¼±±ÇÀ» ³·Ãß·Á ½ÃµµÇß°í, ´ç½ÅÀº ±×°ÍÀ» ÇÒ¸¸ÇÑ Æ¯±ÇÀÌ ºÎ¿©µÇÁö ¾Ê¾Ò´Ù.

Àμö class¿Í id´Â ÇÔ²² ´ç½ÅÀÌ ¿ì¼±±ÇÀ» Àаųª, ¼³Á¤ÇÒ ÇÁ·Î¼¼½ºÀÇ ÁýÇÕÀ» ¼³Á¤ÇÑ´Ù. À̵éÀº

class¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â °ªµéÀÌ´Ù.

PRIO_PROCESS

ÇÑ ÇÁ·Î¼¼½ºÀÇ ¿ì¼±±ÇÀ» Àаųª ¼³Á¤Ç϶ó. Àμö id´Â ÇÁ·Î¼¼½ºÀÇ IDÀÌ´Ù.

PRIO_PGRP

ÇÑ ÇÁ·Î¼¼½º ±×·ìÀÇ ¿ì¼±±ÇÀ» Àаųª ¼³Á¤Ç϶ó. Àμö id´Â ÇÁ·Î¼¼½º ±×·ì ID ÀÌ´Ù.

PRIO_USER

ÇÑ »ç¿ëÀÚÀÇ ÇÁ·Î¼¼½ºµéÀÇ ¿ì¼±±ÇÀ» Àаųª ¼³Á¤Ç϶ó. Àμö id´Â »ç¿ëÀÚ IDÀÌ´Ù.

¸¸ÀÏ Àμö id°¡ 0À̸é, class¿¡ µû¶ó¼­ ÇöÀç ÇÁ·Î¼¼½º, ÇöÀç ÇÁ·Î¼¼½º ±×·ì ¶Ç´Â ÇöÀç »ç¿ëÀÚ¸¦ ³ªÅ¸

³½´Ù.

ÇÔ¼ö : int nice(int increment)

increment·Î ÇöÀç ÇÁ·Î¼¼½ºÀÇ ¿ì¼±±ÇÀ» Áõ°¡½ÃŲ´Ù. ¸®ÅϰªÀº Àǹ̰¡ ¾ø´Ù. ´ÙÀ½Àº niceÇÔ¼ö¿Í °°

Àº ÀÏÀ» ÇÏ´Â ÇÔ¼öÀÌ´Ù. Áï.. niceÀÇ Á¤ÀÇÀÌ´Ù.

int

nice (int increment)

{

int old = getpriority (PRIO_PROCESS, 0);

setpriority (PRIO_PROCESS, 0, old + increment);

}