Linux執行ls,會引起哪些系統呼叫

2021-08-06 00:03:19 字數 950 閱讀 4198

可以通過strace -o ls.txt ls進行檢視:

open(".", o_rdonly|o_nonblock|o_largefile|o_directory|o_cloexec) = 3 ///開啟當前目錄這個檔案(目錄是一種特殊的檔案),並返回檔案控制代碼3

fstat64(3, ) = 0   ///取得當前目錄檔案的屬性,比如這裡大小為4096

fcntl64(3, f_getfd)   = 0x1 (flags fd_cloexec)

getdents64(3, /* 33 entries */, 4096) = 1104     ///讀取當前目錄下的檔案

getdents64(3, /* 0 entries */, 4096)  = 0

close(3)                        = 0        ///關閉當前目錄檔案的控制代碼

。。。通過# cat ls.txt | awk -f '(' | sort | uniq 可以看到所有的命令

access

arch_prctl

brkclose

execve

exit_group

fstat

futex

getdents

getrlimit

ioctl

mmap

mprotect

munmap

open

openat

read

rt_sigaction

rt_sigprocmask

set_robust_list

set_tid_address

statfs

write

shell命令執行機制就是 fork+exec 執行命令,雖然用strace檢視引起的系統呼叫沒有fork,不過我想是因為執行任何乙個shell命令都會呼叫fork,所以它就沒寫了。。。。。

SQL中哪些情況會引起全表掃瞄

1 模糊查詢效率很低 原因 like本身效率就比較低,應該盡量避免查詢條件使用like 對於like 全模糊 這樣的條件,是無法使用索引的,全表掃瞄自然效率很低 另外,由於匹配演算法的關係,模糊查詢的字段長度越大,模糊查詢效率越低。解決辦法 首先盡量避免模糊查詢,如果因為業務需要一定要使用模糊查詢,...

linux中執行cd之後直接ls列出所有檔案

以下command在cshell中生效 在.cshrc中加入下面的語句 alias cd cd ll 注意 後面的空格,以及ll之前的空格 進一步,可以同時列印出cd之後的path alias cd cd ll pwd 如果執行cd之後命令列顯示的目錄 使用者名稱後面緊跟著的 沒有變化的,可以試著再...

linux中執行cd之後直接ls列出所有檔案

以下command在cshell中生效 在.cshrc中加入下面的語句 alias cd cd ll 注意 後面的空格,以及ll之前的空格 進一步,可以同時列印出cd之後的path alias cd cd ll pwd 如果執行cd之後命令列顯示的目錄 使用者名稱後面緊跟著的 沒有變化的,可以試著再...