1、stdin_fileno
在unix一些系統呼叫中使用到stdin_fileno表示標準輸入,stdout_fileno表示標準輸出,stderr_fileno表示標準出錯,使用時需要加標頭檔案
在unix下還有stdin,stdout,stderr表示同樣的含義。
stdin_fileno與stdin的區別:
stdin_fileno:
1).資料型別:int
2).層次:系統級的api,是乙個檔案控制代碼,定義在中。
3).相應的函式:open(),close(),read(),write(),lseek()等系統級別的函式。
sdtin:
1).資料型別:file *
2).層次:c語言的提供的標準輸入流。c語言標準庫封裝系統函式實現。高階的輸入輸出函式。可在中找到外部宣告。
3).相應的函式:fopen(),fclose(),fread(),fwrite(),fseek()等c語言標準函式。
2、signal訊號處理函式
表頭檔案#include
功 能:設定某一訊號的對應動作
函式原型:void (*signal(int signum,void(* handler)(int)))(int);
或者:typedef void (*sig_t)( int );
sig_t signal(int signum,sig_t handler);
引數說明:
第乙個引數signum指明了所要處理的訊號型別,它可以取除了sigkill和sigstop外的任何一種訊號。
第二個引數handler描述了與訊號關聯的動作,它可以取以下三種值:
(1)乙個無返回值的函式位址
此函式必須在signal()被呼叫前申明,handler中為這個函式的名字。當接收到乙個型別為signum的訊號時,就執行handler 所指定的函式。這個函式應有如下形式的定義:
void func(int sig);
(2)sig_ign
這個符號表示忽略該訊號,執行了相應的signal()呼叫後,程序會忽略型別為sig的訊號。
(3)sig_dfl
這個符號表示恢復系統對訊號的預設處理。
函式說明:
signal()會依引數signum 指定的訊號編號來設定該訊號的處理函式。當指定的訊號到達時就會跳轉到引數handler指定的函式執行。當乙個訊號的訊號處理函式執行時,如果程序又接收到了該訊號,該訊號會自動被儲存而不會中斷訊號處理函式的執行,直到訊號處理函式執行完畢再重新呼叫相應的處理函式。但是如果在訊號處理函式執行時程序收到了其它型別的訊號,該函式的執行就會被中斷。
返回值:返回先前的訊號處理
函式指標,如果有錯誤則返回sig_err(-1)。
3、資源獨佔鎖的使用:執行緒為了訪問臨界資源而為其加上鎖,但在訪問過程中被外界取消,如果執行緒處於響應取消狀態,且採用非同步方式響應,或者在開啟獨佔鎖以前的執行路徑上存在取消點,則該臨界資源將永遠處於鎖定狀態得不到釋放。外界取消操作是不可預見的,因此的確需要乙個機制來簡化用於資源釋放的程式設計。
在posix執行緒api中提供了乙個pthread_cleanup_push()/pthread_cleanup_pop()函式對用於自動釋放資源 --從pthread_cleanup_push()的呼叫點到pthread_cleanup_pop()之間的程式段中的終止動作(包括呼叫 pthread_exit()和取消點終止)都將執行pthread_cleanup_push()所指定的清理函式。
4、#include
#include
#include
int main()
return 0;
}free(str)後指標仍然指向原來的堆位址,即你仍然可以繼續使用,但很危險,因為作業系統已經認為這塊記憶體可以使用,他會毫不考慮的將他分配給其他程式,於是你下次使用的時候可能就已經被別的程式改掉了,這種情況就叫「野指標」,所以最好free()了以後再置空
str = null;
即本程式已經放棄再使用他。 5、
int pthread_cancel(
pthread_t
thread)
#include
傳送 終止訊號給
thread
執行緒,如果成功則返回0,否則為非0值。傳送成功並不意味著thread會
終止。若是在整個
程式退出時,要終止各個執行緒,應該在成功傳送
cancel 指令後,使用
pthread_join 函式,等待指定的執行緒已經完全退出以後,再繼續執行;否則,很容易產生 「
段錯誤」。
int pthread_setcancelstate(int state, int *oldstate)
設定本執行緒對cancel訊號的
反應,state有兩種值:pthread_cancel_enable(
預設)和 pthread_cancel_disable,分別表示收到訊號後設為cancled狀態和忽略cancel訊號繼續執行;old_state如果不為 null則存入原來的cancel狀態以便恢復。
6、
多執行緒筆記
一.程序 就是cpu所要執行的乙個任務 自己理解的 執行緒 執行緒是乙個併發執行的順序流,乙個程序包括多個順序執行流程,這執行流程稱為執行緒 就是任務中許多的 二.執行緒排程分配cpu的時間片段給不同的執行緒,得到時間片段的執行緒被cpu執行,其他執行緒等待,執行緒排程會盡可能的分配時間片段取執行。...
多執行緒筆記
1.執行緒的建立方法 繼承thread類 實現runnable介面 重寫run方法 實現callable介面 重寫call方法 2.靜態 簡單來說,靜態 就是 物件和目標物件實現同樣的介面,物件會將目標物件傳遞進來,用目標物件來呼叫方法並新增自己的操作。new thread system.out.p...
多執行緒筆記
掌握的 1.兩種方式建立執行緒 繼承,實現 2.繼承和實現的區分 3.執行緒的生命週期 4.不同狀態下,所對應的方法。通過哪些方法,可以讓執行緒達到某個狀態。5.同步 塊,同步方法。1.學習多執行緒的原因?生活中 程式 乙個完整的功能 方法,沒有被執行 程序 乙個完整的功能 方法,被執行 執行緒 程...