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