Linux系統調用列表

來源:互聯網
上載者:User

以下是Linux系統調用的一個列表,包含了大部分常用系統調用和由系統調用派生出的的函數。這可能是你在互連網上所能看到的唯一一篇中文注釋的Linux系統調用列表,即使是簡單的字母序英文列表,能做到這麼完全也是很罕見的。

按照慣例,這個列表以man pages第2節,即系統調用節為藍本。按照筆者的理解,對其作了大致的分類,同時也作了一些小小的修改,刪去了幾個僅供核心使用,不允許使用者調用的系統調用,對個別本人稍覺不妥的地方作了一些小的修改,並對所有列出的系統調用附上簡要注釋。

其中有一些函數的作用完全相同,只是參數不同。(可能很多熟悉C++朋友馬上就能聯想起函數重載,但是別忘了Linux核心是用C語言寫的,所以只能取成不同的函數名)。還有一些函數已經過時,被新的更好的函數所代替了(gcc在連結這些函數時會發出警告),但因為相容的原因還保留著,這些函數我會在前面標上“*”號以示區別。

一、進程式控制制:
fork 建立一個新進程
clone 按指定條件建立子進程
execve 運行可執行檔
exit 中止進程
_exit 立即中止當前進程
getdtablesize 進程所能開啟的最大檔案數
getpgid 擷取指定進程組標識號
setpgid 設定指定進程組標誌號
getpgrp 擷取當前進程組標識號
setpgrp 設定當前進程組標誌號
getpid 擷取進程標識號
getppid 擷取父進程標識號
getpriority 擷取調度優先順序
setpriority 設定調度優先順序
modify_ldt 讀寫進程的本地描述表
nanosleep 使進程睡眠指定的時間
nice 改變分時進程的優先順序
pause 掛起進程,等待訊號
personality 設定進程運行域
prctl 對進程進行特定操作
ptrace 進程跟蹤
sched_get_priority_max 取得靜態優先順序的上限
sched_get_priority_min 取得靜態優先順序的下限
sched_getparam 取得進程的調度參數
sched_getscheduler 取得指定進程的調度策略
sched_rr_get_interval 取得按RR演算法調度的即時進程的時間片長度
sched_setparam 設定進程的調度參數
sched_setscheduler 設定指定進程的調度策略和參數
sched_yield 進程主動讓出處理器,並將自己等候調度隊列隊尾
vfork 建立一個子進程,以供執行新程式,常與execve等同時使用
wait 等待子進程終止
wait3 參見wait
waitpid 等待指定子進程終止
wait4 參見waitpid
capget 擷取進程許可權
capset 設定進程許可權
getsid 擷取會晤標識號
setsid 設定會晤標識號

 

二、檔案系統控制

1、檔案讀寫操作

fcntl 檔案控制
open 開啟檔案
creat 建立新檔案
close 關閉檔案描述字
read 讀檔案
write 寫檔案
readv 從檔案讀入資料到緩衝數組中
writev 將緩衝數組裡的資料寫入檔案
pread 對檔案隨機讀
pwrite 對檔案隨機寫
lseek 移動檔案指標
_llseek 在64位地址空間裡移動檔案指標
dup 複製已開啟的檔案描述字
dup2 按指定條件複製檔案描述字
flock 檔案加/解鎖
poll I/O多路轉換
truncate 截斷檔案
ftruncate 參見truncate
umask 設定檔案許可權掩碼
fsync 把檔案在記憶體中的部分寫回磁碟

2、檔案系統操作

access 確定檔案的可存取性
chdir 改變當前工作目錄
fchdir 參見chdir
chmod 改變檔案方式
fchmod 參見chmod
chown 改變檔案的屬主或使用者組
fchown 參見chown
lchown 參見chown
chroot 改變根目錄
stat 取檔案狀態資訊
lstat 參見stat
fstat 參見stat
statfs 取檔案系統資訊
fstatfs 參見statfs
readdir 讀取目錄項
getdents 讀取目錄項
mkdir 建立目錄
mknod 建立索引節點
rmdir 刪除目錄
rename 檔案改名
link 建立連結
symlink 建立符號連結
unlink 刪除連結
readlink 讀符號連結的值
mount 安裝檔案系統
umount 卸下檔案系統
ustat 取檔案系統資訊
utime 改變檔案的訪問修改時間
utimes 參見utime
quotactl 控制磁碟配額

 

三、系統控制
ioctl I/O總控制函數
_sysctl 讀/寫系統參數
acct 啟用或禁止進程記賬
getrlimit 擷取系統資源上限
setrlimit 設定系統資源上限
getrusage 擷取系統資源使用方式
uselib 選擇要使用的二進位函數庫
ioperm 設定連接埠I/O許可權
iopl 改變進程I/O權限等級
outb 低級連接埠操作
reboot 重新啟動
swapon 開啟分頁檔和裝置
swapoff 關閉分頁檔和裝置
bdflush 控制bdflush守護進程
sysfs 取核心支援的檔案系統類型
sysinfo 取得系統資訊
adjtimex 調整系統時鐘
alarm 設定進程的鬧鐘
getitimer 擷取計時器值
setitimer 設定計時器值
gettimeofday 取時間和時區
settimeofday 設定時間和時區
stime 設定系統日期和時間
time 取得系統時間
times 取進程已耗用時間
uname 擷取當前UNIX系統的名稱、版本和主機等資訊
vhangup 掛起當前終端
nfsservctl 對NFS守護進程進行控制
vm86 進入類比8086模式
create_module 建立可裝載的模組項
delete_module 刪除可裝載的模組項
init_module 初始化模組
query_module 查詢模組資訊
*get_kernel_syms 取得核心符號,已被query_module代替

 

四、記憶體管理
brk 改變資料區段空間的分配
sbrk 參見brk
mlock 記憶體頁面加鎖
munlock 記憶體頁面解鎖
mlockall 調用進程所有記憶體頁面加鎖
munlockall 調用進程所有記憶體頁面解鎖
mmap 映射虛擬記憶體頁
munmap 去除記憶體頁映射
mremap 重新對應虛擬記憶體地址
msync 將映射記憶體中的資料寫回磁碟
mprotect 設定記憶體映像保護
getpagesize 擷取頁面大小
sync 將記憶體緩衝區資料寫回硬碟
cacheflush 將指定緩衝區中的內容寫回磁碟

 

五、網路管理
getdomainname 取網域名稱
setdomainname 設定網域名稱
gethostid 擷取主機標識號
sethostid 設定主機標識號
gethostname 擷取本主機名稱
sethostname 設定主機名稱

 

六、socket控制
socketcall socket系統調用
socket 建立socket
bind 綁定socket到連接埠
connect 串連遠程主機
accept 響應socket串連請求
send 通過socket發送資訊
sendto 發送UDP資訊
sendmsg 參見send
recv 通過socket接收資訊
recvfrom 接收UDP資訊
recvmsg 參見recv
listen 監聽socket連接埠
select 對多路同步I/O進行輪詢
shutdown 關閉socket上的串連
getsockname 取得本地socket名字
getpeername 擷取通訊對方的socket名字
getsockopt 取連接埠設定
setsockopt 設定連接埠參數
sendfile 在檔案或連接埠間傳輸資料
socketpair 建立一對已聯結的無名socket

七、使用者管理
getuid 擷取使用者標識號
setuid 設定使用者標誌號
getgid 擷取組標識號
setgid 設定組標誌號
getegid 擷取有效組標識號
setegid 設定有效組標識號
geteuid 擷取有效使用者標識號
seteuid 設定有效使用者標識號
setregid 分別設定真實和有效的組標識號
setreuid 分別設定真實和有效使用者標識號
getresgid 分別擷取真實的,有效和儲存過的組標識號
setresgid 分別設定真實的,有效和儲存過的組標識號
getresuid 分別擷取真實的,有效和儲存過的使用者標識號
setresuid 分別設定真實的,有效和儲存過的使用者標識號
setfsgid 設定檔案系統檢查時使用的組標識號
setfsuid 設定檔案系統檢查時使用的使用者標識號
getgroups 擷取後補組標誌清單
setgroups 設定後補組標誌清單

 

八、處理序間通訊

 

ipc 處理序間通訊總控制調用

1、訊號

sigaction 設定對指定訊號的處理方法
sigprocmask 根據參數對訊號集中的訊號執行阻塞/解除阻塞等操作
sigpending 為指定的被阻塞訊號設定隊列
sigsuspend 掛起進程等待特定訊號
signal 參見signal
kill 向進程或進程組發訊號
*sigblock 向被阻塞訊號掩碼中添加訊號,已被sigprocmask代替
*siggetmask 取得現有阻塞訊號掩碼,已被sigprocmask代替
*sigsetmask 用給定訊號掩碼替換現有阻塞訊號掩碼,已被sigprocmask代替
*sigmask 將給定的訊號轉化為掩碼,已被sigprocmask代替
*sigpause 作用同sigsuspend,已被sigsuspend代替
sigvec 為相容BSD而設的訊號處理函數,作用類似sigaction
ssetmask ANSI C的訊號處理函數,作用類似sigaction

2、訊息

msgctl 訊息控制操作
msgget 擷取訊息佇列
msgsnd 發訊息
msgrcv 取訊息

3、管道

pipe 建立管道

4、訊號量

semctl 訊號量控制
semget 擷取一組訊號量
semop 訊號量操作

5、共用記憶體

shmctl 控制共用記憶體
shmget 擷取共用記憶體
shmat 串連共用記憶體
shmdt 拆卸共用記憶體

 

參考資料

  • Linux man pages

  • Advanced Programming in the UNIX Environment, W. Richard Stevens, 1993

 

轉自:http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.