linux的命令呼叫過程

2021-09-24 05:43:27 字數 1847 閱讀 5467

內部命令使用者輸入時系統呼叫的速率快,不是內建命令,系統將會讀取環境變數檔案.bash_profile、/etc/profile去找path路徑。然後在提一下命令的呼叫,有些歷史命令使用過後,會存在在hash表中,當你再次輸入該命令它的呼叫會是這樣乙個過程。hash——>內建命令——>path   命令的呼叫其實應該是這樣乙個過程。

內部命令在系統啟動時就調入記憶體,是常駐記憶體的,所以執行效率高。

type可以用來判斷乙個命令是否為內建命令

type: usage: type [-afptp] name [name ...]
[root@linuxeye ~]# type type

type is a shell builtin

[root@linuxeye ~]# type -p type

[root@linuxeye ~]# type -t type

builtin

[root@linuxeye ~]# type type

type is a shell builtin

[root@linuxeye ~]# type -t type

builtin

[root@linuxeye ~]# type pwd

pwd is a shell builtin

[root@linuxeye ~]# type whiptail

whiptail is /usr/bin/whiptail

[root@linuxeye ~]# type -t whiptail

file

enable既可以檢視內部命令,同時也可以判斷是否為內部命令

[root@linuxeye ~]# enable -a #檢視內部命令

[root@linuxeye ~]# enable whiptail #非內部命令

-bash: enable: whiptail: not a shell builtin

[root@linuxeye ~]# enable pwd #是內部命令

內部命令使用者輸入時系統呼叫的速率快,不是內建命令,系統將會讀取環境變數檔案.bash_profile、/etc/profile去找path路徑。

然後在提一下命令的呼叫,有些歷史命令使用過後,會存在在hash表中,當你再次輸入該命令它的呼叫會是這樣乙個過程。

hash——>內建命令——>path   命令的呼叫其實應該是這樣乙個過程。

[root@linuxeye ~]# type pwd

pwd is a shell builtin

[root@linuxeye ~]# type cat

cat is /usr/bin/cat

[root@linuxeye ~]# pwd

/root

[root@linuxeye ~]# ls linuxeye*

linuxeye.pem linuxeye.txt

[root@linuxeye ~]# cat linuxeye.txt

linuxeye

[root@linuxeye ~]# hash -l #顯示hash表

builtin hash -p /usr/bin/cat cat

builtin hash -p /usr/bin/ls ls

[root@linuxeye ~]# type cat

cat is hashed (/usr/bin/cat)

[root@linuxeye ~]# hash -r #清除hash表

[root@linuxeye ~]# type cat

cat is /usr/bin/cat

從上面操作可以看出。hash表不存放系統內建命令。

Linux系統呼叫過程

linux系統分為核心空間和使用者空間 應用程式通過引發乙個異常來促使系統切換到核心狀態 去執行系統呼叫的處理函式 對於ia 32體系 通過int 0x80指令觸發該中斷 具體可參考gun庫 sysdeps unix sysv linux arch syscall.s 當系統呼叫 open read...

函式的呼叫過程

計算機在執行呼叫函式的過程中,會根據函式完成一些工作,比如資料的傳遞 形參拷貝 返回值 記憶體的分配和釋放 執行控制和轉移,這些操作需要通過形成乙個棧幀來完成。棧幀 stack frame 棧幀就是函式執行的環境。每個函式在被呼叫的時候都會在棧區形成乙個叫做棧幀的結構,這個結構儲存了函式引數 區域性...

驅動呼叫過程

驅動呼叫過程 剛接觸到linux下驅動程式設計,一般都是照著模式寫 或是修改一下已有原始碼,對驅動的呼叫過程並不是很熟悉。在網上不斷的 算是有點明白了,現在我就說下自己的了解。我們載入驅動模組後都會做乙個工作,就是通過mknod在 dev資料夾下建立乙個裝置檔案 如mknod dev c major...