alarm(設定訊號傳送鬧鐘)
相關函式 signal,sleep
表頭檔案
#include
定義函式 unsigned int alarm(unsigned int
seconds);
函式說明
alarm()用來設定訊號sigalrm在經過引數seconds指定的秒數後傳送給目前的程序。如果引數seconds
為0,則之前設定的鬧鐘會被取消,並將剩下的時間返回。
返回值返回之前鬧鐘的剩餘秒數,如果之前未設鬧鐘則返回0。
範例#include
#include
void handler()
main()
}執行 sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
hello
sleep 6 ...
kill(傳送訊號給指定的程序)
相關函式 raise,signal
表頭檔案 #include
#include
定義函式 int kill(pid_t pid,int sig);
函式說明 kill()可以用來送引數sig指定的訊號給引數pid指定的程序。引數pid有幾種情況:
pid>0 將訊號傳給程序識別碼為pid 的程序。
pid=0 將訊號傳給和目前程序相同程序組的所有程序
pid=-1 將訊號廣播傳送給系統內所有的程序
pid<0 將訊號傳給程序組識別碼為pid絕對值的所有程序
引數sig代表的訊號編號可參考附錄d
返回值 執行成功則返回0,如果有錯誤則返回-1。
錯誤** einval 引數sig 不合法
esrch 引數pid 所指定的程序或程序組不存在
eperm 許可權不夠無法傳送訊號給指定程序
範例 #include
#include
#include
#include
main()
else
}執行 sen signal to child process(3170)
hi i am child process!
child process receive signal 6
表頭檔案 #include
定義函式 void (*signal(int signum,void(* handler)(int)))(int);
函式說明 signal()會依引數signum
指定的訊號編號來設定該訊號的處理函式。當指定的訊號到達時就會跳轉到引數handler指定的函式執行。如果引數handler不是函式指標,則必須是下列兩個常數之一:
sig_ign 忽略引數signum指定的訊號。
sig_dfl 將引數signum 指定的訊號重設為核心預設的訊號處理方式。
關於訊號的編號和說明,請參考附錄d
返回值返回先前的訊號處理函式指標,如果有錯誤則返回sig_err(-1)。
附加說明在訊號發生跳轉到自定的handler處理函式執行後,系統會自動將此處理函式換回原來系統預設的處理方式,如果要改變此操作請改用sigaction()。
範例 參考alarm()或raise()。
sigpending(查詢被擱置的訊號)
相關函式 signal,sigaction,sigprocmask,sigsuspend
表頭檔案 #include
定義函式 int sigpending(sigset_t *set);
函式說明 sigpending()會將被擱置的訊號集合由引數set指標返回。
返回值執 行成功則返回0,如果有錯誤則返回-1。
錯誤** efault 引數set指標位址無法訪問
eintr 此呼叫被中斷。
sigprocmask(查詢或設定訊號遮罩)
相關函式 signal,sigaction,sigpending,sigsuspend
表頭檔案 #include
定義函式 int sigprocmask(int how,const sigset_t *set,sigset_t *
oldset);
函式說明 sigprocmask()可以用來改變目前的訊號遮罩,其操作依引數how來決定
sig_block 新的訊號遮罩由目前的訊號遮罩和引數set 指定的訊號遮罩作聯集
sig_unblock 將目前的訊號遮罩刪除掉引數set指定的訊號遮罩
sig_setmask 將目前的訊號遮罩設成引數set指定的訊號遮罩。
如果引數oldset不是null指標,那麼目前的訊號遮罩會由此指標返回。
返回值 執行成功則返回0,如果有錯誤則返回-1。
錯誤** efault 引數set,oldset指標位址無法訪問。
eintr 此呼叫被中斷
sleep(讓程序暫停執行一段時間)
相關函式 signal,alarm
表頭檔案 #include
定義函式 unsigned int sleep(unsigned int seconds);
函式說明 sleep()會令目前的程序暫停,直到達到引數seconds 所指定的時間,或是被訊號所中斷。
返回值 若程序暫停到引數seconds 所指定的時間則返回0,若有訊號中斷則返回剩餘秒數。
Signal訊號處理
在goahead的linux模組main.c 檔案中,main函式中出現了以下三個語句 signal sigpipe,sig ign signal sigint,siginthandler signal sigterm,siginthandler 這三條語句與網路訊號有關。在這裡做咯記錄。1.訊號概...
Linux 訊號signal處理機制 四
4 alarm和 setitimer系統呼叫 系統呼叫alarm的功能是設定乙個定時器,當定時器計時到達時,將發出乙個訊號給程序。該呼叫的宣告格式如下 unsigned int alarm unsigned int seconds 在使用該呼叫的程序中加入以下標頭檔案 include 系 統呼叫al...
linux 訊號 signal函式
include include include include include include include signal 函式有iso c定義,因為iso c 不涉及多執行緒 程序組以及終端i o等,所以它對訊號的定義非常含糊,以至於對於unix系統而言毫無作用。最好用sigactioan來代替...