Unix系統程式設計筆記 2 程式 程序 執行緒

2021-08-27 15:27:26 字數 1008 閱讀 9223

1、程式怎麼轉換成程序

程式(program)是為了完成特定的任務而準備好的乙個指令序列。

c編譯器將每個原始檔翻譯成乙個目標檔案,然後編譯器將這些單個的目標檔案同必須的一些庫相鏈結,形成乙個可執行模組(executable module),

程式執行或執行時,作業系統將可執行模組拷貝到主儲存器的程式映象(program image)中去。

程序(process)是乙個正在執行的程式例項。每個例項都有自己的位址空間和執行狀態。

每個例項都有自己的位址空間和執行狀態。

當作業系統向核心資料結構中新增了適當的資訊,並為執行程式**分配了必要的資源之後,程式就變成了程序。

2、執行緒和執行執行緒

程式執行時,由程序程式計數器的值來決定下面該執行哪一條程序指令。得到的指令流被稱為執行執行緒(thread of execution)

執行緒是代表了程序內執行執行緒的一種抽象資料型別,執行緒有自己的執行棧、程式計數器值、暫存器組和狀態。

3、程式映像的布局

載入之後,可執行程式看起來佔據了乙個連續的記憶體體,這個連續的記憶體塊被稱為程式映像

4、庫函式呼叫

必須要處理所有的錯誤,而不僅僅是那些必須檢測的錯誤

perror輸出乙個對應error當前值的錯誤訊息

#include

void perror(const char *s);

5、函式返回值和錯誤

錯誤處理是編寫可靠系統程式中的乙個關鍵問題。

處理unix程式中的錯誤的標準方法有:

a)列印出錯訊息並退出程式

b)返回-1或null,並設定errno這樣的錯誤指示符

c)返回錯誤碼

6、引數陣列

引數陣列(argment array)是乙個指向字串的指標陣列

mine -c 10 2.0

argv[0] = mine

argv[1] = -c

argv[2] = 10

argv[3] = 2.0

argv[4] = null

unix系統程式設計

popen pclose popen介面定義 include file popen const char command,const char type int pclose file stream popen函式會建立乙個管道,並且建立乙個子程序來執行shell,shell會建立乙個子程序來執行c...

UNIX系統程式設計1

man 你想查詢的內容 如果man你也不會用也不要緊,那你就 man man 一下,呵呵。只可惜好像還沒有翻譯成中文,對於像我這樣英文水平還有待提高的朋友來說讀起來有點麻煩。最後還有乙個好工具就是網路,有什麼不會的google一下好多問題都能解決。好,囉嗦的半天,說歸正傳,免得給大家造成光說不練的印...

Unix系統程式設計()brk,sbrk

在堆上分配記憶體 程序可以通過增加堆的大小來分配記憶體,所謂堆是一段長度可變的連續虛擬記憶體,始於程序的未初始化資料段末尾,隨著記憶體的分配和釋放而增減。通常將堆的當前記憶體邊界稱為 program break 下面也會學習一族函式brk,sbrk和malloc。調整program break br...