Linux程序部分筆記

2021-10-20 01:34:13 字數 2857 閱讀 8934

** 程式是靜態的概念,gcc ***.c –o pro磁碟中生成pro檔案,叫做程式。程序是程式的一次執行活動,通俗點意思是程式跑起來了,系統中就多了乙個程序**

** 使用指令ps - aux可以檢視所有程序

使用ps -aux|grep ***,可以只查詢想要的程序

**** 每個程序都有乙個非負整數表示的唯一id,

叫做pid,類似身份證。利用getpid()可以獲取自身的程序識別符號

利用getppid()獲取父程序的程序識別符號。

**** 程序a建立了程序b那麼a叫做父程序,b叫做子程序,父子程序是相對的概念,理解為人類中的父子關係

**** 有**段,資料段(初始化資料段和未初始化資料段),堆,棧,命令列引數和環境變數

**所需標頭檔案和函式原型

#

include

pid_t

fork

(void

);

fork函式呼叫成功(建立父子程序,pid不相同),返回兩次

返回值為0, 代表當前程序是子程序

返回值非負數,代表當前程序為父程序

呼叫失敗,返回-1

下面例子證明,執行結果這裡就不展示了(標頭檔案自己加)

int

main()

else

if(retpid ==0)

return0;

}

fork函式:

1、fork()是建立程序函式。

2、c程式一開始,就會產生 乙個程序,當這個程序執行到fork()的時候,會建立乙個子程序。

3、此時父程序和子程序是共存的,它們倆會一起向下執行c程式的**。

4、需要注意!!!子程序建立成功後,fork是返回兩個值,乙個代表父程序,乙個代表子程序:代表父程序的值是一串數字,這串數字是子程序的id;乙個代表子程序,值為0。

1.vfork直接使用父程序的儲存空間,不拷貝

2.vfork保證子程序先執行,當子程序呼叫exit()退出後父程序才執行。

1.子程序退出狀態不被收集,則會變成z+(殭屍程序)

2.呼叫wait函式,收集子程序退出狀態

#

include

#include

pid_t

wait

(int

*status)

;

wait

(&status)

;printf

("child quit,child status = %d \n"

,wexitstatus

(status)

);

該printf輸出的值為子程序中exit()的引數。

在呼叫wait()等待子程序的時間裡,父程序處於阻塞狀態,當呼叫waitpid()等待子程序的退出狀態時,父程序不阻塞

父程序如果不等待子程序退出,在子程序之前就結束了自己的「生命」,此時子程序叫做孤兒程序。

linux避免系統存在過多孤兒程序,initinit程序id號為1,詳細介紹程序收留孤兒程序,變成孤兒程序的父程序。

exec族函式函式的作用:

我們用fork函式建立新程序後,經常會在新程序中呼叫exec函式去執行另外乙個程式。當程序呼叫exec函式時,該程序被完全替換為新程式。因為呼叫exec函式並不建立新程序,所以前後程序的id並沒有改變。

返回值:

exec函式族的函式執行成功後不會返回,呼叫失敗時,會設定errno並返回-1,然後從原程式的呼叫點接著往下執行。

execl

("./echoarg"

,"echoarg"

,"aaa"

,null

);

#

include

#include

intmain

(int argc,

char

*ar**)

printf

("after execl\n");

return0;

}

execlp可以自動尋找可執行檔案的位址。

1.簡介

建立乙個管道,然後再建立乙個程序。然後執行命令

2.呼叫格式

#include

file *popen(const char *command, const char *type);

3.引數介紹

command:是乙個指向以null結束的shell命令字串的指標。這行命令將被傳到/bin/sh並使用 -c標誌,shell將執行這個命令

type:只能是唯讀或只寫中的一種,得到的返回值(標準i/o流)也具有和type相應的唯讀或只寫型別。如果type是"r",則檔案指標連線到command的標準輸出;如果type是"w",則檔案指標連線到command的標準輸入

例子:

#

include

#include

intmain

(void);

fp =

popen

("ls"

,"r");

if(fp ==

null

)fread

(buf,

10240,1

, fp)

;printf

("%s\n"

,buf)

;pclose

(fp)

;return0;

}

Linux程序管理的部分筆記

一 程序管理 一 程序檢視與管理 1 常用的程序管理命令 ps aux 檢視程序 pstree 樹狀檢視程序狀態 top 動態檢視程序狀態 2 程序的管理 ctrl z 將前台程序調入後台並暫停 jobs 檢視後台程序 fg 將後台第 個程序在前台執行 直接將前台程序放在後台執行 kill kill...

Linux部分筆記

home 家目錄 dev 裝置掛載目錄 mnt 臨時掛載目錄 media cd 切換目錄 cd 退出 返回上一級目錄 ls 列出當前目錄內容 a all 所有檔案 包括隱藏檔案 l d r x r x r x 1 代表檔案的型別 d目錄 l 鏈結檔案 普通檔案 2 3 4 檔案的許可權 rwx re...

linux部分命令筆記

1.su 使用者名稱 切換使用者 如 su root 切換到超級使用者 adduser 使用者名稱 新增使用者 adduser yy 新增使用者 yy passwd yy 為yy使用者新增口令 ls l 檢視詳細內容 root localhost 超級使用者 當前使用者的工作目錄 yy localh...