30.訊號相關函式
阿新 • • 發佈:2018-12-31
1.kill--傳送訊號給指定程序
相當於:kill(getpid(),sig);
函式原型:void abort(void);
(1)alarm--設定定時器(每個程序只有一個定時器)
使用的是自然定時法(真實生活是多少秒,就是多少秒)
不受程序狀態的影響
函式原型:unsigned int alarm(unsigned int seconds);
引數:秒
當時間到達之後,函式發出一個訊號:SIGALRM
測試程式執行的時間:time 可執行程式
real=使用者+核心+損耗
損耗來自檔案IO操作
(2)setitimer--定時器,並實現週期性定時
函式原型:
int setitimer(int which,
ITIMER_REAL:自然定時法來定時
ITIMER_VIRTUAL:使用者區執行的時間
ITIMER_PROF:使用者區+核心區執行的時間
const struct itimerval* new_value,
struct itimerval{
struct timerval it_interval; //定時器迴圈週期
struct timerval it_value; //第一次觸發定時器的時間
};
struct timerval{
time_t tv_dec; // seconds
suseconds_t tv_usec; // microsenconds
};
函式原型:int kill(pid_t pid,int sig);
2.raise--自己給自己發訊號
相當於:kill(getpid(),sig);
函式原型:int raise(int sig);
3.abort--給自己傳送異常終止訊號函式原型:void abort(void);
沒有引數也沒有返回值,永遠不會呼叫失敗
4.鬧鐘(定時器)(1)alarm--設定定時器(每個程序只有一個定時器)
使用的是自然定時法(真實生活是多少秒,就是多少秒)
不受程序狀態的影響
函式原型:unsigned int alarm(unsigned int seconds);
引數:秒
當時間到達之後,函式發出一個訊號:SIGALRM
返回值如下:
測試程式執行的時間:time 可執行程式
real=使用者+核心+損耗
損耗來自檔案IO操作
(2)setitimer--定時器,並實現週期性定時
函式原型:
int setitimer(int which,
ITIMER_REAL:自然定時法來定時
ITIMER_VIRTUAL:使用者區執行的時間
ITIMER_PROF:使用者區+核心區執行的時間
const struct itimerval* new_value,
struct itimer* old_value // 一般填NULL
);
struct itimerval{
struct timerval it_interval; //定時器迴圈週期
struct timerval it_value; //第一次觸發定時器的時間
};
struct timerval{
time_t tv_dec; // seconds
suseconds_t tv_usec; // microsenconds
};