c語言信號函數
A. Linux 環境下的c語言, 關於 kill 發送信號和 signal() 函數, 具體問題在以下代碼的注釋處
pause()會令目前的進程暫停(進入睡眠狀態), 直到被信號(signal)所中斷。
當50信號觸動了,pause將退出睡眠狀態,執行printf和return
B. C語言中(void)signal(SIGALRM, alarmhandle);是什麼意思
signal(SIGALRM, alarmhandle); 表示給當前進程注冊SIGALRM信號處理代碼,如果收到SIGALRM信號,就會去執行alarmhandle函數
$mansignal
...
SYNOPSIS
#include<signal.h>
typedefvoid(*sighandler_t)(int);
sighandler_tsignal(intsignum,sighandler_thandler);
DESCRIPTION
Thesignal().,oreitherSIG_IGNorSIG_DFL.
signal()函數是個系統調用,該函數按signum設定一個新的信號處理句柄(函數).新設定的處理函數可以是用戶自定義的函數,也可以是系統指定的SIG_IGN或SIG_DFL.
參考代碼:
#include<signal.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
voidalarmhandle(intsig)
{
printf("recvsig:%d ",sig);
printf("exit! ");
exit(0);
}
intmain()
{
signal(SIGALRM,alarmhandle);
printf("begin... ");
alarm(5);//定時器,用於在5秒後產生SIGALRM信號
while(1);
return0;
}
運行結果:
begin...
recv sig:14
exit!
C. C語言常用的函數有哪些
C語言庫函數,常用庫函數有:
1、scanf格式輸入函數
2、printf格式輸出函數
3、systemdos命令函數
4、sort排序
5、main主函數
6、fgets文件讀取字元串函數
7、fputs文件寫入字元串函數
8、fscanf文件格式讀取函數
9、fprintf文件格式寫入函數
10、fopen打開文件函數
11、getchar輸入字元函數
12、putchar輸出字元函數
13、malloc動態申請內存函數
14、free釋放內存函數
15、abs求絕對值數學函數
16、sqrt求平方根數學函數
(3)c語言信號函數擴展閱讀
語言組成:
1、數據類型
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
2、常量與變數
常量其值不可改變,符號常量名通常用大寫。
變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
3、數組
如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。
4、指針
如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
D. C語言中的signal函數的作用是什麼啊
signal()是一種系統調用,用於通知運行時系統,當某種特定的「軟體中斷」發生時調用特定的程序。它的真正的名字應該是「Call_that_routine_when_this_interrupt_Comes_in(當該中斷發生時調用那個程序)」,調用signal()函數,並通過參數傳遞告訴它終端類型以及用於處理中斷的程序。
ANSIC 標准中,signal()函數的聲明如下:
void (*signal (int sig ,void (*func)(int))) (int) ;
signal是一個函數,他返回一個函數指針,後者所指向的函數接受一個int參數並返回void 。
E. C語言中信號問題
信號是程序執行過程中出現的異常情況。它可能是由程序中的錯誤造成的,例如引用內存中的一個非法地址;或者是由程序數據中的錯誤造成的,例如浮點數被0除;或者是由外部事件引發的,例如用戶按了Ctrl+Break鍵。
你可以利用標准庫函數signal()指定要對這些異常情況採取的處理措施(實施處理措施的函數被稱為「信號處理函數」)。signal()的原型為:
#include <signal.h>
void(*signal(int hum,void(*func)(int)))(int);
如果定義一個typedef,理解起來就容易一些了。下面給出的sigHandler_t類型是指向一個程序的指針,該函數有一個int類型的參數,並且返回一個void類型:
typedef void(*sigHandler_t)(int);
sigHandler_t signal(int num , sigHandler_t func);
signal()有兩個參數,分別為int類型和sigHandler_t類型,其返回值為sigHandler_t類型。以func參數形式傳遞給signal()的那個函數將成為第num號異常情況的新的信號處理函數。signal()的返回值是信號hum原來的信號處理函數。在設置了一個暫時的信號處理函數之後,你可以利用該值恢復程序先前的行為。num的可能值依賴於系統,並且在signal.h中列出。func的可能值可以是你的程序中的任意函數,或者是SIG_DFL和SLG_IGN這兩個特別定義的值之一。SIG_DFL是指系統的預設處理措施,通常是暫停執行程序;SIG_IGN表示信號將被忽略。