getrusage(2) - wariua/manpages-ko GitHub Wiki

NAME

getrusage - μžμ› μ‚¬μš©λŸ‰ μ–»κΈ°

SYNOPSIS

#include <sys/time.h>
#include <sys/resource.h>

int getrusage(int who, struct rusage *usage);

DESCRIPTION

getrusage()λŠ” λ‹€μŒ 쀑 ν•˜λ‚˜μΌ 수 μžˆλŠ” who에 λŒ€ν•΄ μžμ› μ‚¬μš©λŸ‰ μΈ‘μ •μΉ˜λ₯Ό λ°˜ν™˜ν•œλ‹€.

RUSAGE_SELF
호좜 ν”„λ‘œμ„ΈμŠ€μ˜ μžμ› μ‚¬μš© 톡계λ₯Ό λ°˜ν™˜ν•œλ‹€. ν”„λ‘œμ„ΈμŠ€ λ‚΄ λͺ¨λ“  μŠ€λ ˆλ“œμ˜ μžμ› μ‚¬μš© 합계이닀.
RUSAGE_CHILDREN
μ’…λ£ŒλΌμ„œ λŒ€κΈ°κΉŒμ§€ 이뀄진 호좜 ν”„λ‘œμ„ΈμŠ€μ˜ μžμ‹ λͺ¨λ‘μ— λŒ€ν•œ μžμ› μ‚¬μš© 톡계λ₯Ό λ°˜ν™˜ν•œλ‹€. μ‚¬μ΄μ˜ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ λͺ¨λ‘ μ’…λ£Œλœ μžμ‹μ— λŒ€κΈ°λ₯Ό ν–ˆμœΌλ©΄ μžμ‹ μ•„λž˜ 후손듀이 μ“΄ μžμ›κΉŒμ§€ 이 톡계에 ν¬ν•¨λœλ‹€.
RUSAGE_THREAD (λ¦¬λˆ…μŠ€ 2.6.26λΆ€ν„°)
호좜 μŠ€λ ˆλ“œμ˜ μžμ› μ‚¬μš© 톡계λ₯Ό λ°˜ν™˜ν•œλ‹€. <sys/resource.h>μ—μ„œ 이 μƒμˆ˜ μ •μ˜λ₯Ό μ–»μœΌλ €λ©΄ (*μ–΄λ–€* 헀더도 ν¬ν•¨μ‹œν‚€κΈ° 전에) _GNU_SOURCE κΈ°λŠ₯ 확인 λ§€ν¬λ‘œκ°€ μ •μ˜λΌ μžˆμ–΄μ•Ό ν•œλ‹€.

usageκ°€ κ°€λ¦¬ν‚€λŠ” ꡬ쑰체둜 μžμ› μ‚¬μš©λŸ‰μ΄ λ°˜ν™˜λœλ‹€. κ·Έ κ΅¬μ‘°μ²΄λŠ” λ‹€μŒ ν˜•νƒœμ΄λ‹€.

struct rusage {
    struct timeval ru_utime; /* μ‚¬μš©ν•œ μ‚¬μš©μž CPU μ‹œκ°„ */
    struct timeval ru_stime; /* μ‚¬μš©ν•œ μ‹œμŠ€ν…œ CPU μ‹œκ°„ */
    long   ru_maxrss;        /* μ΅œλŒ€ 상주 μ§‘ν•© 크기 */
    long   ru_ixrss;         /* ν•„μˆ˜ 곡유 λ©”λͺ¨λ¦¬ 크기 */
    long   ru_idrss;         /* ν•„μˆ˜ λΉ„κ³΅μœ  데이터 크기 */
    long   ru_isrss;         /* ν•„μˆ˜ λΉ„κ³΅μœ  μŠ€νƒ 크기 */
    long   ru_minflt;        /* νŽ˜μ΄μ§€ μž¬ν™œμš© (μ—°μ„± νŽ˜μ΄μ§€ 폴트) 횟수 */
    long   ru_majflt;        /* νŽ˜μ΄μ§€ 폴트 (κ²½μ„± νŽ˜μ΄μ§€ 폴트) 횟수 */
    long   ru_nswap;         /* μŠ€μ™‘ */
    long   ru_inblock;       /* 블둝 μž…λ ₯ λ™μž‘ 횟수 */
    long   ru_oublock;       /* 블둝 좜λ ₯ λ™μž‘ 횟수 */
    long   ru_msgsnd;        /* IPC λ©”μ‹œμ§€ 전솑 횟수 */
    long   ru_msgrcv;        /* IPC λ©”μ‹œμ§€ μˆ˜μ‹  횟수 */
    long   ru_nsignals;      /* μ‹œκ·Έλ„ μˆ˜μ‹  횟수 */
    long   ru_nvcsw;         /* 자발적 λ¬Έλ§₯ μ „ν™˜ 횟수 */
    long   ru_nivcsw;        /* λΉ„μžλ°œμ  λ¬Έλ§₯ μ „ν™˜ 횟수 */
};

λͺ¨λ“  ν•„λ“œλ“€μ΄ μ±„μ›Œμ§€μ§„ μ•ŠλŠ”λ‹€. 비지원 ν•„λ“œλ“€μ€ μ»€λ„μ—μ„œ 0으둜 μ„€μ •ν•œλ‹€. (μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ° ν•„λ“œλ“€μ„ μ œκ³΅ν•˜λŠ” 건 λ‹€λ₯Έ μ‹œμŠ€ν…œλ“€κ³Όμ˜ ν˜Έν™˜μ„±μ„ μœ„ν•΄μ„œμ΄κΈ°λ„ ν•˜κ³  μ–Έμ  κ°€ λ¦¬λˆ…μŠ€μ—μ„œ μ§€μ›ν•˜κ²Œ 될 μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€.) λ‹€μŒκ³Ό 같이 ν•„λ“œλ“€μ„ ν•΄μ„ν•œλ‹€.

ru_utime
μ‚¬μš©μž λͺ¨λ“œμ—μ„œ μ‹€ν–‰ν•˜λ©° 보낸 μ‹œκ°„μ˜ μ΄λŸ‰μ„ timeval ꡬ쑰체둜 (μ΄ˆμ™€ 마이크둜초둜) ν‘œν˜„ν•œ 것이닀.
ru_stime
컀널 λͺ¨λ“œμ—μ„œ μ‹€ν–‰ν•˜λ©° 보낸 μ‹œκ°„μ˜ μ΄λŸ‰μ„ timeval ꡬ쑰체둜 (μ΄ˆμ™€ 마이크둜초둜) ν‘œν˜„ν•œ 것이닀.
ru_maxrss (λ¦¬λˆ…μŠ€ 2.6.32λΆ€ν„°)
μ΅œλŒ€λ‘œ μ‚¬μš©ν•œ 상주 μ§‘ν•© (ν‚¬λ‘œλ°”μ΄νŠΈ λ‹¨μœ„) 크기이닀. RUSAGE_CHILDREN인 경우 ν”„λ‘œμ„ΈμŠ€ νŠΈλ¦¬μ—μ„œ κ°€μž₯ 큰 상주 μ§‘ν•© 크기가 μ•„λ‹ˆλΌ μžμ‹λ“€ 쀑 μ΅œλŒ€ 상주 μ§‘ν•© 크기이닀.
ru_ixrss (비지원)
ν˜„μž¬ λ¦¬λˆ…μŠ€μ—μ„œλŠ” 이 ν•„λ“œλ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
ru_idrss (비지원)
ν˜„μž¬ λ¦¬λˆ…μŠ€μ—μ„œλŠ” 이 ν•„λ“œλ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
ru_isrss (비지원)
ν˜„μž¬ λ¦¬λˆ…μŠ€μ—μ„œλŠ” 이 ν•„λ“œλ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
ru_minflt
I/O ν™œλ™ 없이 μ²˜λ¦¬ν•œ νŽ˜μ΄μ§€ 폴트 수. μž¬ν• λ‹Ή λŒ€κΈ° νŽ˜μ΄μ§€ λͺ©λ‘μ˜ νŽ˜μ΄μ§€ ν”„λ ˆμž„μ„ "μž¬ν™œμš©"ν•΄μ„œ I/O ν™œλ™μ„ ν”Όν•œλ‹€.
ru_majflt
I/O ν™œλ™μ΄ ν•„μš”ν–ˆλ˜ 처리 νŽ˜μ΄μ§€ 폴트 수.
ru_nswap (비지원)
ν˜„μž¬ λ¦¬λˆ…μŠ€μ—μ„œλŠ” 이 ν•„λ“œλ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
ru_inblock (λ¦¬λˆ…μŠ€ 2.6.22λΆ€ν„°)
파일 μ‹œμŠ€ν…œμ—μ„œ μž…λ ₯을 μˆ˜ν–‰ν•΄μ•Ό ν–ˆλ˜ 횟수.
ru_oublock (λ¦¬λˆ…μŠ€ 2.6.22λΆ€ν„°)
파일 μ‹œμŠ€ν…œμ—μ„œ 좜λ ₯을 μˆ˜ν–‰ν•΄μ•Ό ν–ˆλ˜ 횟수.
ru_msgsnd (비지원)
ν˜„μž¬ λ¦¬λˆ…μŠ€μ—μ„œλŠ” 이 ν•„λ“œλ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
ru_msgrcv (비지원)
ν˜„μž¬ λ¦¬λˆ…μŠ€μ—μ„œλŠ” 이 ν•„λ“œλ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
ru_nsignals (비지원)
ν˜„μž¬ λ¦¬λˆ…μŠ€μ—μ„œλŠ” 이 ν•„λ“œλ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
ru_nvcsw (λ¦¬λˆ…μŠ€ 2.6λΆ€ν„°)
νƒ€μž„ μŠ¬λΌμ΄μŠ€κ°€ λλ‚˜κΈ° 전에 (일반적으둜 μžμ›μ΄ μ‚¬μš© κ°€λŠ₯ν•΄μ§€κΈ°λ₯Ό 기닀리렀고) ν”„λ‘œμ„ΈμŠ€κ°€ 자발적으둜 ν”„λ‘œμ„Έμ„œλ₯Ό ν¬κΈ°ν•˜μ—¬ λ°œμƒν•œ λ¬Έλ§₯ μ „ν™˜ 횟수.
ru_nivcsw (λ¦¬λˆ…μŠ€ 2.6λΆ€ν„°)
더 높은 μš°μ„ μˆœμœ„μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰ κ°€λŠ₯ν•΄μ§€κ±°λ‚˜ ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€κ°€ νƒ€μž„ 슬라이슀λ₯Ό μ΄ˆκ³Όν•΄μ„œ λ°œμƒν•œ λ¬Έλ§₯ μ „ν™˜ 횟수.

RETURN VALUE

성곡 μ‹œ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

EFAULT
usageκ°€ μ ‘κ·Ό κ°€λŠ₯ν•œ μ£Όμ†Œ 곡간 밖을 가리킀고 μžˆλ‹€.
EINVAL
whoκ°€ μœ νš¨ν•˜μ§€ μ•Šλ‹€.

ATTRIBUTES

이 μ ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄λ“€μ— λŒ€ν•œ μ„€λͺ…은 attributes(7)λ₯Ό 보라.

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
getrusage() μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Safe

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. POSIX.1μ—μ„œ getrusage()λ₯Ό λͺ…μ„Έν•˜κ³ λŠ” μžˆμ§€λ§Œ ru_utime 및 ru_stime ν•„λ“œλ§Œ λͺ…μ„Έν•œλ‹€.

RUSAGE_THREADλŠ” λ¦¬λˆ…μŠ€ μ „μš©μ΄λ‹€.

NOTES

execve(2)λ₯Ό κ±°μΉ˜λ©΄μ„œ μžμ› μ‚¬μš©λŸ‰ μˆ˜μΉ˜λ“€μ΄ λ³΄μ‘΄λœλ‹€.

<sys/time.h>λ₯Ό ν¬ν•¨μ‹œν‚€λŠ” 게 μš”μ¦˜μ—λŠ” ν•„μš”μΉ˜ μ•Šμ§€λ§Œ 이식성을 λ†’μ—¬ μ€€λ‹€. (사싀 struct timeval이 <sys/time.h>에 μ •μ˜λΌ μžˆλ‹€.)

λ¦¬λˆ…μŠ€ 컀널 버전 2.6.9 μ „μ—μ„œλŠ” SIGCHLD 처리 방식이 SIG_IGN으둜 섀정돼 μžˆλŠ” κ²½μš°μ— μžμ‹ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ› μ‚¬μš©λŸ‰μ΄ μžλ™μœΌλ‘œ RUSAGE_CHILDREN λ°˜ν™˜ 값에 ν¬ν•¨λœλ‹€. ν•˜μ§€λ§Œ POSIX.1-2001μ—μ„œλŠ” 이λ₯Ό λͺ…ν™•νžˆ κΈˆμ§€ν•œλ‹€. λ¦¬λˆ…μŠ€ 2.6.9 및 μ΄ν›„μ—μ„œλŠ” 이 λΆˆμΌμΉ˜κ°€ μ‹œμ •λΌ μžˆλ‹€.

이 νŽ˜μ΄μ§€ μ•žμ— λ‚˜μ˜¨ ꡬ쑰체 μ •μ˜λŠ” 4.3BSD Renoμ—μ„œ κ°€μ Έμ˜¨ 것이닀.

μ•„μ£Ό μ˜›λ‚  μ‹œμŠ€ν…œλ“€μ—μ„  getrusage()와 μš©λ„κ°€ λΉ„μŠ·ν•œ vtimes() ν•¨μˆ˜λ₯Ό μ œκ³΅ν–ˆλ‹€. ν•˜μœ„ ν˜Έν™˜μ„±μ„ μœ„ν•΄ glibcμ—μ„œλ„ vtimes()λ₯Ό μ œκ³΅ν•œλ‹€. μƒˆλ‘œ μž‘μ„±ν•˜λŠ” μ‘μš©μ€ λͺ¨λ‘ getrusage()λ₯Ό 쓰도둝 μž‘μ„±ν•΄μ•Ό ν•œλ‹€.

proc(5)의 /proc/[pid]/stat μ„€λͺ…도 μ°Έκ³ .

SEE ALSO

clock_gettime(2), getrlimit(2), times(2), wait(2), wait4(2), clock(3)


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️