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...