1.pid唯一描述乙個程序
getpid()函式返回程序id號,getppid返回其父程序的id號
返回型別為pid_t型--通過typedef定義為unsigned int
2.fork()函式:以父程序為藍本複製乙個程序,執行一次返回兩次。
標頭檔案:#include,#include
返回-1建立失敗
返回0在子程序中執行。
返回程序id號在父程序中執行
3.system()函式:阻塞當前程序去執行特定的命令,直到執行完畢。
#include
int system(const char *command);
返回值: 失敗返回-1,sh不能執行,返回127.成功返回程序狀態值
4.exec()函式系列:代替原來的程序,pid號也相同
5.使用者態初始程序init()
檢視程序關係樹命令:pstree
5.管道
#include
int pipe(int filedes[2]); //引數為檔案描述符的陣列,儲存管道返回的兩個檔案描述符
即fd1(寫操作二建立和開啟)的輸出變成了fd0(讀操作)輸入
執行成功返
回0;失敗返回-1
父子程序通訊:
write函式定義如下:
#include ssize_t write(int filedes, void *buf, size_t nbytes);//返回:若成功則返回寫入的位元組數,若出錯則返回-1
//filedes:檔案描述符
//buf:待寫入資料快取區
//nbytes:要寫入的位元組數
read函式定義:#include ssize_t read(int filedes, void *buf, size_t nbytes);
//返回:若成功則返回讀到的位元組數,若已到檔案末尾則返回0,若出錯則返回-1
//filedes:檔案描述符
//buf:讀取資料快取區
//nbytes:要讀取的位元組數
6.linux建立管道
mkfifo lsy
用ls -al 檢視管道檔案屬性為p
7.linux下的執行緒
linux程序 執行緒協作 之 epoll
typedef union epoll data epoll data t struct epoll event events可以是以下幾個巨集的集合 epollin 表示對應的檔案描述符可以讀 包括對端socket正常關閉 epollout 表示對應的檔案描述符可以寫 epollpri 表示對應的...
linux程序和執行緒
這兩天一直在看linxu程序和執行緒的東西,總是效率比較低,這麼一點基礎的東西還看了這麼久。該自我反省一下。首先來看看程序。程序分為三個部分,程序控制塊,程式段和資料段。程序是乙個有生命的實體,程式是乙個沒有生命的實體。只有cpu賦予程式生命的時候,程式才成為乙個活動的實體,我們稱之為 程序 每乙個...
Linux程序和執行緒
linux核心只有程序,沒有執行緒的概念。非要說區別,那就是執行緒沒有自己的單獨的位址空間 mm struct 執行緒和其父程序共享位址空間。pthread呼叫fork clone vm 來建立新的程序,子程序與父程序共享vm空間。注意,這裡實際上是共享mm struct結構,子程序甚至沒有建立自己...