times() - Unix,Linux系統呼叫 - 技術教學
Tutorials Point


  Unix初學者指南
  Unix Shell程式設計
  高階Unix
  Unix有用參考
  Unix有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於TP  

times() - Unix,Linux系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

times - 獲取程序時間

概要

#include <sys/times.h>

clock_t times(struct tms *buf);

描述

times() 將當前程序時間儲存在buf指向的struct tms中。struct tms<sys/times.h>中定義。

struct tms {
clock_t tms_utime;  /* user time */
clock_t tms_stime;  /* system time */
clock_t tms_cutime; /* user time of children */
clock_t tms_cstime; /* system time of children */
};

tms_utime欄位包含呼叫程序執行指令所花費的CPU時間。tms_stime欄位包含系統代表呼叫程序執行任務時所花費的CPU時間。tms_cutime欄位包含所有已等待終止子程序的tms_utimetms_cutime值的總和。tms_cstime欄位包含所有已等待終止子程序的tms_stimetms_cstime值的總和。

已終止子程序(及其後代)的時間在wait(2) 或waitpid(2) 返回其程序 ID 時被新增。特別是,子程序未等待的孫程序的時間永遠不會被看到。

所有報告的時間都以時鐘滴答表示。

返回值

times() 返回自過去某個任意點以來經過的時鐘滴答數。對於Linux 2.4和更早版本,此點是系統啟動的時刻。從Linux 2.6開始,此點是系統啟動時間之前的(2^32/HZ) - 300(即約4.29億)秒。返回值可能會超過clock_t型別的可能範圍。發生錯誤時,返回(clock_t) -1,並相應地設定errno

註釋

每秒的時鐘滴答數可以使用sysconf(_SC_CLK_TCK) 獲取;在POSIX-1996中,提到了在<time.h>中定義的符號CLK_TCK已過時。它現在已經過時。

在2.6.9之前的Linux核心版本中,如果SIGCHLD的處理方式設定為SIG_IGN,則已終止子程序的時間會自動包含在tms_cstimetms_cutime欄位中,儘管POSIX.1-2001指出這隻有在呼叫程序wait()其子程序時才會發生。這種不符合標準的情況在Linux 2.6.9及更高版本中得到了糾正。

在Linux上,可以將buf引數指定為NULL,結果是times() 只返回函式結果。但是,POSIX沒有指定此行為,大多數其他Unix實現都需要buf的非NULL值。

請注意,clock(3) 返回的clock_t型別的值不是以時鐘滴答為單位測量的,而是以CLOCKS_PER_SEC為單位測量的。

符合標準

SVr4, 4.3BSD, POSIX.1-2001。

歷史註釋

SVr1-3返回long,並且結構成員的型別為time_t,儘管它們儲存的是時鐘滴答,而不是自紀元以來的秒數。V7使用long作為結構成員,因為它還沒有time_t型別。

在較舊的系統上,每秒的時鐘滴答數由變數HZ給出。

參見



previous next Printer Friendly

廣告


  

廣告



廣告