天天看點

程序資源資訊 struct rusage

include

利用getrusage可以得到程序的相關資源資訊。如:使用者開銷時間,系統開銷時間,接收的信号量等等;

下面是rusage的結構:

struct rusage {

struct timeval ru_utime; /* user time used */

struct timeval ru_stime; /* system time used */

long ru_maxrss;

#define ru_first ru_ixrss

long ru_ixrss; /* XXX: 0 */

long ru_idrss; /* XXX: sum of rm_asrss */

long ru_isrss; /* XXX: 0 */

long ru_minflt; /* any page faults not requiring I/O */

long ru_majflt; /* any page faults requiring I/O */

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 ” */

#define ru_last ru_nivcsw

};

如果參數RUSAGE_SELF,則得到的是目前程序的資源資訊。如果是RUSAGE_CHILDREN,則将傳回當程序的終止掉的子程序和等待子程序的資源資訊。當調用成功後,傳回0,否則-1;

下面是一個例子:

istruct rusage usage;

igetrusage(RUSAGE_SELF, &usage);

這樣你就可以用usage擷取你想要的東西了;

同樣wait3()和wait4()兩個函數也可以得到程序資源資訊

The article write by nealgavin