一、與程序相關的系統函式
1.getpid
#include/*提供pid_t型別的定義*/
#include/*提供函式的定義*/
pid_t getpid(void); /*返回值為當前程序的程序id*/
2.getppid
#include/*提供pid_t型別的定義*/
#include/*提供函式的定義*/
pid_getppid(void); /*返回當前程序的父程序的id*/
3.fork
作用:轉殖乙個程序。當乙個程序呼叫fork函式,完成後就出現兩個一模一樣的程序,由此得到乙個新的程序。
新產生的程序成為子程序,呼叫fork的程序成為父程序。
子程序拷貝父程序的資料段,**段,父子程序的執行次序不確定(就看哪個程序執行的塊)。
fork函式呼叫後,會返回兩個值:
在父程序中,fork返回新建立的子程序的id
在子程序中,fork返回0
出錯時,返回-1。
#include/*提供pid_t型別的定義*/
#include/*提供函式的定義*/
pid_t fork(void);
4.1exit
#include
void
exit(int status);
exit系統呼叫用來終止程序。帶有乙個整型的status引數,可以利用這個引數傳遞程序結束時的狀態。
如果status為0,表示正常結束,其他值表示出現了錯誤,程序非正常結束。
在實際程式設計中,可以利用wait系統呼叫接收子程序的返回值,從而針對不同的情況進行處理。
4.2 _exit
#include
void _exit(int status);
_exit函式作用簡單,直接使程序停止執行,清除使用的記憶體空間,銷毀其在核心中的各種資料結構。
與exit函式相比,exit對_exit作了包裝。exit呼叫時,會檢查檔案開啟情況,把檔案緩衝區內容寫回檔案,清理i/o緩衝區。
_exit不會處理i/o緩衝區。
eg:/*exit_test.c*/
#include
int main(void)
./exit_test
輸出;output begin
content in buffer
/*_exit_test.c*/
#include
int main(void)
./_exit_test
輸出;output begin
驗證結果:
_exit(0)執行時,未對標準i/o做處理,緩衝區裡的內容丟失。
管道,用於程序間的通訊。從管道的一端順序的寫入資料,從另一端順序地讀出資料。
讀寫位置都是自動增加的,資料讀一次之後就釋放。在緩衝區寫滿時,由相應規則控制讀寫程序進入等待佇列。
當空緩衝區有寫入資料或滿的緩衝區有資料讀出時,就喚醒等待佇列中的寫程序繼續讀寫。
管道兩端分別用描述子fd[0]和fd[1]來描述,管道兩端的任務劃分是固定的,fd[0]為讀端,fd[1]為寫端。不可混用。
管道的性質:
1.只支援單向資料流
2.只能用於有親緣關係的程序之間
3.無命名字
4.管道緩衝區有限(只存在於記憶體)
5.管道傳送的是無格式的位元組流,讀寫雙方必須事先約定好資料格式。
5.pipe
#include
int pipe(int fd[2]);
7.mknod
#include//資料型別標頭檔案
#include//函式標頭檔案
int mknod(char* pathname, mode_t mode, dev_t dev);
8.signal
#include
void (*signal(int signum, void(* handler)(int)));
9.kill
#include
int kill(pid_t pid, int sig);
向程序號為pid的程序傳送sig訊號。
/******************fork()*******************************/
#include
#include
#include
int main()
/******************end**********************************/
執行程式後,得到的結果,操作環境fedora 14 核心2.6
Linux 程序程式設計
程序程式設計 1 getpid 函式的作用 獲取程序的識別碼 程序號 函式的原型 pid t getpid void 返回值 目前程序的程序號 標頭檔案 include 2 fork 函式的作用 建立乙個程序 函式的原型 pid t fork void 函式的返回值 0 出錯 0 表示當前建立的是子...
Linux 程序程式設計
特點 wait waitpid 殭屍程序 特點 pid t waitpid pid t pid,int status,options 使用pipe 使用方便 兩個程序中,其中乙個程序讀取管道 使用pipe函式構建父子關係,呼叫ls l grep a.out demo c int main int i...
Linux程序程式設計
程序是作業系統中最基本 最重要的概念,可以說程序是作業系統結構的基礎。作業系統上任何程式的執行都離不開程序。1.程序的概念 傳統的程式本是一組指令的集合,是乙個靜態實體,無法描述程式在記憶體中的執 況,也就不能如實反映程式併發執行過程的特徵,為了深刻描述程式動態執行過程的性質,人們就引入了 程序 的...