誰給個linux常見函數,數據結構和頭文件的的詳細資料


包括系統調用,驅動開發相關的
發現總是記不住

8 个解决方案

#1


用man查

#2


本文列出了大部分常見的Linux系統調用,並附有簡要中文說明。 

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


按照慣例,這個列表以man&nbsppages第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&nbspI/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&nbspI/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&nbspsocket系統調用 

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&nbspANSI&nbspC的信號處理函數,作用類似sigaction 


2、消息 


msgctl 消息控制操作 

msgget 獲取消息隊列 

msgsnd 發消息 

msgrcv 取消息 


3、管道 


pipe 創建管道 


4、信號量 


semctl 信號量控制 

semget 獲取一組信號量 

semop 信號量操作 


5、共享內存 


shmctl 控制共享內存 

shmget 獲取共享內存 

shmat 連接共享內存 

shmdt 拆卸共享內存 

#3


http://man.chinaunix.net/develop/c&c++/linux_c/default.htm
這個?
可能與驅動內核等無關。。。。

#4


3樓好詳細

#5


樓主,東西可以google很快。
熟了可以man.

#6


一般來說,做的多了應該很自然就能記住,否則就太麻煩了。
核心的相關函數信息可以參閱《linux設備驅動程序》和《升入理解linux內核》
應用層的可以用man,也可以參閱《unix高級環境編程》

#7


google下很多的,在系統里直接man也行

#8


擅用 g.cn

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com