原创 linux系統編程之文件與IO:系統調用read和write

read系統調用 一旦有了與一個打開文件描述相連的文件描述符,只要該文件是用O_RDONLY或O_RDWR標誌打開的,就可以用read()系統調用從該文件中讀取字節 函數原型: #include <unistd.h> ssiz

原创 linux系統編程之信號(七):被信號中斷的系統調用和庫函數處理方式

    一些IO系統調用執行時, 如 read 等待輸入期間, 如果收到一個信號,系統將中斷read, 轉而執行信號處理函數. 當信號處理返回後, 系統遇到了一個問題: 是重新開始這個系統調用, 還是讓系統調用失敗?早期UNIX系統的做法是

原创 linux系統編程之進程(一):進程與程序

本節目標: 什麼是程序 什麼是進程 進程數據結構 進程與程序區別與聯繫 一,什麼是程序? 程序是完成特定任務的一系列指令集合 二,什麼是進程? 從用戶的角度來看進程是程序的一次動態執行過程 從操作系統的核心來看,進程是操作系

原创 linux系統編程之信號(六):信號發送函數sigqueue和信號安裝函數sigaction

一,sigaction() #include <signal.h> int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact)); si

原创 linux系統編程之信號(五):信號集操作函數,信號阻塞與未決

一,信號集及相關操作函數 信號集被定義爲一種數據類型: typedef struct {                        unsigned long sig[_NSIG_WORDS]; } sigset_t 信號集用來

原创 linux系統編程之信號(一):中斷與信號

一,什麼是中斷? 1.中斷的基本概念 中斷是指計算機在執行期間,系統內發生任何非尋常的或非預期的急需處理事件,使得CPU暫時中斷當前正在執行的程序而轉去執行相應的事件處理程序,待處理完畢後又返回原來被中斷處繼續執行或調度新的進程執行的過程。

原创 linux系統編程之信號(八):三種時間結構及定時器setitimer()詳解

一,三種時間結構 time_t://seconds   struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ };   struct tim

原创 linux系統編程之管道(二):管道讀寫規則

一,管道讀寫規則 當沒有數據可讀時 O_NONBLOCK disable:read調用阻塞,即進程暫停執行,一直等到有數據來到爲止。 O_NONBLOCK enable:read調用返回-1,errno值爲EAGAIN。 當管道滿的

原创 linux系統編程之管道(三):命令管道(FIFO)

一,匿名管道PIPE侷限性 管道的主要侷限性正體現在它的特點上: 只支持單向數據流; 只能用於具有親緣關係的進程之間; 沒有名字; 管道的緩衝區是有限的(管道制存在於內存中,在管道創建時,爲緩衝區分配一個頁面大小); 管道所傳送的

原创 我的友情鏈接

51CTO博客開發

原创 linux系統編程之信號(二):信號處理流程(產生、註冊、註銷、執行)

    對於一個完整的信號生命週期(從信號發送到相應的處理函數執行完畢)來說,可以分爲三個階段: 信號誕生 信號在進程中註冊 信號在進程中的註銷 信號處理函數執行 1    信號誕生     信號事件的發生有兩個來源:硬件來源(

原创 linux系統編程之管道(一):匿名管道(pipe)

一,什麼是管道 管道是Linux支持的最初Unix IPC形式之一,具有以下特點: 管道是半雙工的,數據只能向一個方向流動;需要雙方通信時,需要建立起兩個管道; 只能用於父子進程或者兄弟進程之間(具有親緣關係的進程); 單獨構成一種

原创 linux系統編程之進程(八):守護進程詳解及創建,daemon()使用

一,守護進程概述 Linux Daemon(守護進程)是運行在後臺的一種特殊進程。它獨立於控制終端並且週期性地執行某種任務或等待處理某些發生的事件。它不需要用戶輸入就能運行而且提供某種服務,不是對整個系統就是對某個用戶程序提供服務。Linu

原创 linux系統編程之進程(二):進程生命週期與PCB(進程控制塊)

本節目標: 進程狀態變遷 進程控制塊 進程創建 進程撤消 終止進程的五種方法 一,進程狀態變遷 進程的三種基本狀態 就緒(Ready)狀態 當進程已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執行,這時的進程狀態

原创 linux系統編程之進程(三):進程複製fork,孤兒進程,殭屍進程

本節目標: 複製進程映像 fork系統調用 孤兒進程、殭屍進程 寫時複製 一,進程複製(或產生)      使用fork函數得到的子進程從父進程的繼承了整個進程的地址空間,包括:進程上下文、進程堆棧、內存信息、打開的文件描述符、