新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 常見(jiàn)的Linux系統(tǒng)調(diào)用

常見(jiàn)的Linux系統(tǒng)調(diào)用

作者: 時(shí)間:2011-02-25 來(lái)源:網(wǎng)絡(luò) 收藏
本文列出了大部分常見(jiàn)的Linux系統(tǒng)調(diào)用,并附有簡(jiǎn)要中文說(shuō)明。

以下是Linux系統(tǒng)調(diào)用的一個(gè)列表,包含了大部分常用系統(tǒng)調(diào)用和由系統(tǒng)調(diào)用派生出的的函數(shù)。這可能是你在互聯(lián)網(wǎng)上所能看到的唯一一篇中文注釋的Linux系統(tǒng)調(diào)用列表,即使是簡(jiǎn)單的字母序英文列表,能做到這么完全也是很罕見(jiàn)的。

按照慣例,這個(gè)列表以man pages第2節(jié),即系統(tǒng)調(diào)用節(jié)為藍(lán)本。按照筆者的理解,對(duì)其作了大致的分類(lèi),同時(shí)也作了一些小小的修改,刪去了幾個(gè)僅供內(nèi)核使用,不允許用戶調(diào)用的系統(tǒng)調(diào)用,對(duì)個(gè)別本人稍覺(jué)不妥的地方作了一些小的修改,并對(duì)所有列出的系統(tǒng)調(diào)用附上簡(jiǎn)要注釋。

其中有一些函數(shù)的作用完全相同,只是參數(shù)不同。(可能很多熟悉C 朋友馬上就能聯(lián)想起函數(shù)重載,但是別忘了Linux核心是用C語(yǔ)言寫(xiě)的,所以只能取成不同的函數(shù)名)。還有一些函數(shù)已經(jīng)過(guò)時(shí),被新的更好的函數(shù)所代替了(gcc在鏈接這些函數(shù)時(shí)會(huì)發(fā)出警告),但因?yàn)榧嫒莸脑蜻€保留著,這些函數(shù)我會(huì)在前面標(biāo)上“*”號(hào)以示區(qū)別。

一、進(jìn)程控制:

fork創(chuàng)建一個(gè)新進(jìn)程
clone按指定條件創(chuàng)建子進(jìn)程
execve運(yùn)行可執(zhí)行文件
exit中止進(jìn)程
_exit立即中止當(dāng)前進(jìn)程
getdtablesize進(jìn)程所能打開(kāi)的最大文件數(shù)
getpgid獲取指定進(jìn)程組標(biāo)識(shí)號(hào)
setpgid設(shè)置指定進(jìn)程組標(biāo)志號(hào)
getpgrp獲取當(dāng)前進(jìn)程組標(biāo)識(shí)號(hào)
setpgrp設(shè)置當(dāng)前進(jìn)程組標(biāo)志號(hào)
getpid獲取進(jìn)程標(biāo)識(shí)號(hào)
getppid獲取父進(jìn)程標(biāo)識(shí)號(hào)
getpriority獲取調(diào)度優(yōu)先級(jí)
setpriority設(shè)置調(diào)度優(yōu)先級(jí)
modify_ldt讀寫(xiě)進(jìn)程的本地描述表
nanosleep使進(jìn)程睡眠指定的時(shí)間
nice改變分時(shí)進(jìn)程的優(yōu)先級(jí)
pause掛起進(jìn)程,等待信號(hào)
personality設(shè)置進(jìn)程運(yùn)行域
prctl對(duì)進(jìn)程進(jìn)行特定操作
ptrace進(jìn)程跟蹤
sched_get_priority_max取得靜態(tài)優(yōu)先級(jí)的上限
sched_get_priority_min取得靜態(tài)優(yōu)先級(jí)的下限
sched_getparam取得進(jìn)程的調(diào)度參數(shù)
sched_getscheduler取得指定進(jìn)程的調(diào)度策略
sched_rr_get_interval取得按RR算法調(diào)度的實(shí)時(shí)進(jìn)程的時(shí)間片長(zhǎng)度
sched_setparam設(shè)置進(jìn)程的調(diào)度參數(shù)
sched_setscheduler設(shè)置指定進(jìn)程的調(diào)度策略和參數(shù)
sched_yield進(jìn)程主動(dòng)讓出處理器,并將自己等候調(diào)度隊(duì)列隊(duì)尾
vfork創(chuàng)建一個(gè)子進(jìn)程,以供執(zhí)行新程序,常與execve等同時(shí)使用
wait等待子進(jìn)程終止
wait3參見(jiàn)wait
waitpid等待指定子進(jìn)程終止
wait4參見(jiàn)waitpid
capget獲取進(jìn)程權(quán)限
capset設(shè)置進(jìn)程權(quán)限
getsid獲取會(huì)晤標(biāo)識(shí)號(hào)
setsid設(shè)置會(huì)晤標(biāo)識(shí)號(hào)






回頁(yè)首


二、文件系統(tǒng)控制

1、文件讀寫(xiě)操作

fcntl文件控制
open打開(kāi)文件
creat創(chuàng)建新文件
close關(guān)閉文件描述字
read讀文件
write寫(xiě)文件
readv從文件讀入數(shù)據(jù)到緩沖數(shù)組中
writev將緩沖數(shù)組里的數(shù)據(jù)寫(xiě)入文件
pread對(duì)文件隨機(jī)讀
pwrite對(duì)文件隨機(jī)寫(xiě)
lseek移動(dòng)文件指針
_llseek在64位地址空間里移動(dòng)文件指針
dup復(fù)制已打開(kāi)的文件描述字
dup2按指定條件復(fù)制文件描述字
flock文件加/解鎖
pollI/O多路轉(zhuǎn)換
truncate截?cái)辔募?/TD>
ftruncate參見(jiàn)truncate
umask設(shè)置文件權(quán)限掩碼
fsync把文件在內(nèi)存中的部分寫(xiě)回磁盤(pán)


2、文件系統(tǒng)操作

access確定文件的可存取性
chdir改變當(dāng)前工作目錄
fchdir參見(jiàn)chdir
chmod改變文件方式
fchmod參見(jiàn)chmod
chown改變文件的屬主或用戶組
fchown參見(jiàn)chown
lchown參見(jiàn)chown
chroot改變根目錄
stat取文件狀態(tài)信息
lstat參見(jiàn)stat
fstat參見(jiàn)stat
statfs取文件系統(tǒng)信息
fstatfs參見(jiàn)statfs
readdir讀取目錄項(xiàng)
getdents讀取目錄項(xiàng)
mkdir創(chuàng)建目錄
mknod創(chuàng)建索引節(jié)點(diǎn)
rmdir刪除目錄
rename文件改名
link創(chuàng)建鏈接
symlink創(chuàng)建符號(hào)鏈接
unlink刪除鏈接
readlink讀符號(hào)鏈接的值
mount安裝文件系統(tǒng)
umount卸下文件系統(tǒng)
ustat取文件系統(tǒng)信息
utime改變文件的訪問(wèn)修改時(shí)間
utimes參見(jiàn)utime
quotactl控制磁盤(pán)配額






回頁(yè)首


三、系統(tǒng)控制

ioctlI/O總控制函數(shù)
_sysctl讀/寫(xiě)系統(tǒng)參數(shù)
acct啟用或禁止進(jìn)程記賬
getrlimit獲取系統(tǒng)資源上限
setrlimit設(shè)置系統(tǒng)資源上限
getrusage獲取系統(tǒng)資源使用情況
uselib選擇要使用的二進(jìn)制函數(shù)庫(kù)
ioperm設(shè)置端口I/O權(quán)限
iopl改變進(jìn)程I/O權(quán)限級(jí)別
outb低級(jí)端口操作
reboot重新啟動(dòng)
swapon打開(kāi)交換文件和設(shè)備
swapoff關(guān)閉交換文件和設(shè)備
bdflush控制bdflush守護(hù)進(jìn)程
sysfs取核心支持的文件系統(tǒng)類(lèi)型
sysinfo取得系統(tǒng)信息
adjtimex調(diào)整系統(tǒng)時(shí)鐘
alarm設(shè)置進(jìn)程的鬧鐘
getitimer獲取計(jì)時(shí)器值
setitimer設(shè)置計(jì)時(shí)器值
gettimeofday取時(shí)間和時(shí)區(qū)
settimeofday設(shè)置時(shí)間和時(shí)區(qū)
stime設(shè)置系統(tǒng)日期和時(shí)間
time取得系統(tǒng)時(shí)間
times取進(jìn)程運(yùn)行時(shí)間
uname獲取當(dāng)前UNIX系統(tǒng)的名稱(chēng)、版本和主機(jī)等信息
vhangup掛起當(dāng)前終端
nfsservctl對(duì)NFS守護(hù)進(jìn)程進(jìn)行控制
vm86進(jìn)入模擬8086模式
create_module創(chuàng)建可裝載的模塊項(xiàng)
delete_module刪除可裝載的模塊項(xiàng)
init_module初始化模塊
query_module查詢模塊信息
*get_kernel_syms取得核心符號(hào),已被query_module代替






回頁(yè)首


四、內(nèi)存管理

brk改變數(shù)據(jù)段空間的分配
sbrk參見(jiàn)brk
mlock內(nèi)存頁(yè)面加鎖
munlock內(nèi)存頁(yè)面解鎖
mlockall調(diào)用進(jìn)程所有內(nèi)存頁(yè)面加鎖
munlockall調(diào)用進(jìn)程所有內(nèi)存頁(yè)面解鎖
mmap映射虛擬內(nèi)存頁(yè)
munmap去除內(nèi)存頁(yè)映射
mremap重新映射虛擬內(nèi)存地址
msync將映射內(nèi)存中的數(shù)據(jù)寫(xiě)回磁盤(pán)
mprotect設(shè)置內(nèi)存映像保護(hù)
getpagesize獲取頁(yè)面大小
sync將內(nèi)存緩沖區(qū)數(shù)據(jù)寫(xiě)回硬盤(pán)
cacheflush將指定緩沖區(qū)中的內(nèi)容寫(xiě)回磁盤(pán)






回頁(yè)首


五、網(wǎng)絡(luò)管理

getdomainname取域名
setdomainname設(shè)置域名
gethostid獲取主機(jī)標(biāo)識(shí)號(hào)
sethostid設(shè)置主機(jī)標(biāo)識(shí)號(hào)
gethostname獲取本主機(jī)名稱(chēng)
sethostname設(shè)置主機(jī)名稱(chēng)






回頁(yè)首


六、socket控制

socketcallsocket系統(tǒng)調(diào)用
socket建立socket
bind綁定socket到端口
connect連接遠(yuǎn)程主機(jī)
accept響應(yīng)socket連接請(qǐng)求
send通過(guò)socket發(fā)送信息
sendto發(fā)送UDP信息
sendmsg參見(jiàn)send
recv通過(guò)socket接收信息
recvfrom接收UDP信息
recvmsg參見(jiàn)recv
listen監(jiān)聽(tīng)socket端口
select對(duì)多路同步I/O進(jìn)行輪詢
shutdown關(guān)閉socket上的連接
getsockname取得本地socket名字
getpeername獲取通信對(duì)方的socket名字
getsockopt取端口設(shè)置
setsockopt設(shè)置端口參數(shù)
sendfile在文件或端口間傳輸數(shù)據(jù)
socketpair創(chuàng)建一對(duì)已聯(lián)接的無(wú)名socket






回頁(yè)首


七、用戶管理

getuid獲取用戶標(biāo)識(shí)號(hào)
setuid設(shè)置用戶標(biāo)志號(hào)
getgid獲取組標(biāo)識(shí)號(hào)
setgid設(shè)置組標(biāo)志號(hào)
getegid獲取有效組標(biāo)識(shí)號(hào)
setegid設(shè)置有效組標(biāo)識(shí)號(hào)
geteuid獲取有效用戶標(biāo)識(shí)號(hào)
seteuid設(shè)置有效用戶標(biāo)識(shí)號(hào)
setregid分別設(shè)置真實(shí)和有效的的組標(biāo)識(shí)號(hào)
setreuid分別設(shè)置真實(shí)和有效的用戶標(biāo)識(shí)號(hào)
getresgid分別獲取真實(shí)的,有效的和保存過(guò)的組標(biāo)識(shí)號(hào)
setresgid分別設(shè)置真實(shí)的,有效的和保存過(guò)的組標(biāo)識(shí)號(hào)
getresuid分別獲取真實(shí)的,有效的和保存過(guò)的用戶標(biāo)識(shí)號(hào)
setresuid分別設(shè)置真實(shí)的,有效的和保存過(guò)的用戶標(biāo)識(shí)號(hào)
setfsgid設(shè)置文件系統(tǒng)檢查時(shí)使用的組標(biāo)識(shí)號(hào)
setfsuid設(shè)置文件系統(tǒng)檢查時(shí)使用的用戶標(biāo)識(shí)號(hào)
getgroups獲取后補(bǔ)組標(biāo)志清單
setgroups設(shè)置后補(bǔ)組標(biāo)志清單






回頁(yè)首


八、進(jìn)程間通信

ipc進(jìn)程間通信總控制調(diào)用


1、信號(hào)

sigaction設(shè)置對(duì)指定信號(hào)的處理方法
sigprocmask根據(jù)參數(shù)對(duì)信號(hào)集中的信號(hào)執(zhí)行阻塞/解除阻塞等操作
sigpending為指定的被阻塞信號(hào)設(shè)置隊(duì)列
sigsuspend掛起進(jìn)程等待特定信號(hào)
signal參見(jiàn)signal
kill向進(jìn)程或進(jìn)程組發(fā)信號(hào)
*sigblock向被阻塞信號(hào)掩碼中添加信號(hào),已被sigprocmask代替
*siggetmask取得現(xiàn)有阻塞信號(hào)掩碼,已被sigprocmask代替
*sigsetmask用給定信號(hào)掩碼替換現(xiàn)有阻塞信號(hào)掩碼,已被sigprocmask代替
*sigmask將給定的信號(hào)轉(zhuǎn)化為掩碼,已被sigprocmask代替
*sigpause作用同sigsuspend,已被sigsuspend代替
sigvec為兼容BSD而設(shè)的信號(hào)處理函數(shù),作用類(lèi)似sigaction
ssetmaskANSI C的信號(hào)處理函數(shù),作用類(lèi)似sigaction


2、消息

msgctl消息控制操作
msgget獲取消息隊(duì)列
msgsnd發(fā)消息
msgrcv取消息


3、管道

pipe創(chuàng)建管道


4、信號(hào)量

semctl信號(hào)量控制
semget獲取一組信號(hào)量
semop信號(hào)量操作


5、共享內(nèi)存

shmctl控制共享內(nèi)存
shmget獲取共享內(nèi)存
shmat連接共享內(nèi)存
shmdt拆卸共享內(nèi)存
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉