常用的Linux系統調用命令 下面一些函數已經過時,被新的更好的函數所代替了(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 參見waitwaitpid 等待指定子進程終止wait4 參見waitpidcapget 擷取進程許可權capset 設定進程許可權getsid 擷取會晤標識號setsid 設定會晤標識號 二、檔案讀寫操作fcntl 檔案控制open 開啟檔案creat 建立新檔案close 關閉檔案描述字read 讀檔案write 寫檔案readv 從檔案讀入資料到緩衝數組中writev 將緩衝數組裡的資料寫入檔案pread 對檔案隨機讀pwrite 對檔案隨機寫lseek 移動檔案指標_llseek 在64位地址空間裡移動檔案指標dup 複製已開啟的檔案描述字dup2 按指定條件複製檔案描述字flock 檔案加/解鎖poll I/O多路轉換truncate 截斷檔案ftruncate 參見truncateumask 設定檔案許可權掩碼fsync 把檔案在記憶體中的部分寫回磁碟 三、檔案系統操作access 確定檔案的可存取性chdir 改變當前工作目錄fchdir 參見chdirchmod 改變檔案方式fchmod 參見chmodchown 改變檔案的屬主或使用者組fchown 參見chownlchown 參見chownchroot 改變根目錄stat 取檔案狀態資訊lstat 參見statfstat 參見statstatfs 取檔案系統資訊fstatfs 參見statfsreaddir 讀取目錄項getdents 讀取目錄項mkdir 建立目錄mknod 建立索引節點rmdir 刪除目錄rename 檔案改名link 建立連結symlink 建立符號連結unlink 刪除連結readlink 讀符號連結的值mount 安裝檔案系統umount 卸下檔案系統ustat 取檔案系統資訊utime 改變檔案的訪問修改時間utimes 參見utimequotactl 控制磁碟配額 四、系統控制 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 參見brkmlock 記憶體頁面加鎖munlock 記憶體頁面解鎖mlockall 調用進程所有記憶體頁面加鎖munlockall 調用進程所有記憶體頁面解鎖mmap 映射虛擬記憶體頁munmap 去除記憶體頁映射mremap 重新對應虛擬記憶體地址msync 將映射記憶體中的資料寫回磁碟mprotect 設定記憶體映像保護getpagesize 擷取頁面大小sync 將記憶體緩衝區資料寫回硬碟cacheflush 將指定緩衝區中的內容寫回磁碟 六、網路管理 getdomainname 取網域名稱setdomainname 設定網域名稱gethostid 擷取主機標識號sethostid 設定主機標識號gethostname 擷取本主機名稱sethostname 設定主機名稱 七、Socket控制socketcall socket系統調用socket 建立socketbind 綁定socket到連接埠connect 串連遠程主機accept 響應socket串連請求send 通過socket發送資訊sendto 發送UDP資訊sendmsg 參見sendrecv 通過socket接收資訊recvfrom 接收UDP資訊recvmsg 參見recvlisten 監聽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 處理序間通訊總控制調用 9.1 訊號sigaction 設定對指定訊號的處理方法sigprocmask 根據參數對訊號集中的訊號執行阻塞/解除阻塞等操作sigpending 為指定的被阻塞訊號設定隊列sigsuspend 掛起進程等待特定訊號signal 參見signalkill 向進程或進程組發訊號*sigblock 向被阻塞訊號掩碼中添加訊號,已被sigprocmask代替*siggetmask 取得現有阻塞訊號掩碼,已被sigprocmask代替*sigsetmask 用給定訊號掩碼替換現有阻塞訊號掩碼,已被sigprocmask代替*sigmask 將給定的訊號轉化為掩碼,已被sigprocmask代替*sigpause 作用同sigsuspend,已被sigsuspend代替sigvec 為相容BSD而設的訊號處理函數,作用類似sigactionssetmask ANSI C的訊號處理函數,作用類似sigaction 9.2 訊息msgctl 訊息控制操作msgget 擷取訊息佇列msgsnd 發訊息msgrcv 取訊息 9.3 管道pipe 建立管道 9.4 訊號量semctl 訊號量控制semget 擷取一組訊號量semop 訊號量操作 9.5 共用記憶體 shmctl 控制共用記憶體shmget 擷取共用記憶體shmat 串連共用記憶體shmdt 拆卸共用記憶體