系統呼叫和訊號 吃魚的小臉貓 新浪部落格

2021-09-25 19:12:53 字數 1303 閱讀 9906

一、

系統呼叫

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 的是陣列單個...