一、
系統呼叫
1、檔案描述符:每個程序在pcb中都儲存著乙份檔案描述表,檔案描述符即為該錶
的索引;
核心利用檔案描述符來訪問檔案,當開啟/讀
/寫乙個檔案時,核心就會返回乙個檔案 描述符;
//檔案描述符是乙個非父負整數;
2、系統呼叫:
(1) 實現在核心中,通過介面來接受,而不是通過呼叫,讓**在核心中執行,即核心代表使用者來執行;
(2)使用者態: 程式執行的環境在使用者時,執行使用者**
核心態:
程式執行在核心(優先順序較高,許可權不同)
系統呼叫號:系統呼叫表的下標#define _nr fork 2 /絕對值
系統呼叫表:通過彙編**實現,每個呼叫號所對應的是函式的入口位址
(3)當乙個程序執行時都會開啟三個檔案:
stdin(
標準輸入
).stdout.(
標準輸出
),(標準錯誤輸出)
3、系統呼叫和庫函式的區別
系統呼叫的實現在核心中,通過介面來接受//系統呼叫是進入核心的橋梁
庫函式的實現在庫函式中,直接跳到程序位址執行,不是作業系統的一部分,
二、訊號
1、訊號:傳送訊號kill()
//屬於系統呼叫;
子程序結束,傳送給父程序訊號:sigchld(子程序中斷或者改變狀態),父程序不進行任何處理(利用他可以解決殭屍程序)
2、收到訊號做出響應
signal();
(1)預設
(2)忽略
(3)自定義
補充:15 kill 命令預設傳送
9 不能通過
signal
()改變響應方式,只能按預設結束程序
ctrcl + c 結束在前台執行的程式
->
傳送2
終端中斷
3、訊號的接受和程式的執行 是非同步的執行,何時收到訊號,程序並不能確定
4、訊號的實現:
在核心中有倆個變數:
kill 傳送訊號就是將每個長整型的某個位從0置為
1,當核心發現某個位變為
1,這說明收到了相應的訊號,查詢該訊號對應的處理方法
(void fun(int sign))
,呼叫該方法響應訊號
程式突然崩掉或者異常結束,是因為核心收到訊號的原因
5.程序結束的倆種可能性:
(1)程式主動呼叫exit結束;
(2)收到異常結束訊號;
陣列和指標 吃魚的小臉貓 新浪部落格
一 陣列的定義及使用及分類 1 陣列是用來存放一組資料的,而因為存放的資料可以分為不同種類,陣列也分為不同種 int,float,double char.2 定義陣列的方式和定義乙個變數相似,都是資料型別 陣列名 變數名 陣列長度可寫可不寫 在定義陣列時如給予一定的長度,一定要分配足夠的記憶體空間,...
函式預設值和內聯函式 吃魚的小臉貓 新浪部落格
一 函式預設值 1.定義 我們可以賦予函式引數預設值。所謂預設值就是在呼叫時,可以不寫某些引數的值,編譯器會自動把預設值傳遞給呼叫語句中。預設值可以在宣告或定義中 設定 也可在宣告或定義時都設定,都設定時要求預設值是相同的。2.函式預設值的特性 1 預設引數在函式宣告中提供,當又有宣告又有定義時,定...
2023年03月08日 吃魚的小臉貓 新浪部落格
一 函式指標 顧名思義 指向函式的指標 int p int,int p max true printf d p 20,10 printf d p 20,10 false printf d p 20,10 補充 arr和 arr的數值相同,但含義不同 arr 陣列名可表示陣列的首位址,1 的是陣列單個...