linux常用頭文件詳解(轉)
(2012-03-26 15:13:19)
標籤:
雜談 |
分類: unix/linux環境高級編程 |
首先說明幾點:
1 Linux內核所在目錄爲/usr/src/kernels/...
2 Linux頭文件所在目錄爲/usr/include/...
3 找不見頭文件可以用find命令查找 find / -name *.h
linux常用頭文件如下:
POSIX標準定義的頭文件
<dirent.h> 目錄項
<fcntl.h> 文件控制read,write,fcntl,close,link,stat,umask,unlink,fopen
O_RDONLY O_WRONLY O_NONBLOCK等。
<fnmatch.h> 文件名匹配類型
<glob.h> 路徑名模式匹配類型
<grp.h> 組文件
<netdb.h> 網絡數據庫操作
<pwd.h> 口令文件
<regex.h> 正則表達式
<tar.h> TAR歸檔值
<termios.h> 終端I/O
<unistd.h> 符號常量unixstandard header ->unistd.h,STDIN_FILENO,STDOUT_FILENO
<utime.h> 文件時間
<wordexp.h> 字符擴展類型
-------------------------
<arpa/inet.h> INTERNET定義
<net/if.h> 套接字本地接口
<netinet/in.h> INTERNET地址族
<netinet/tcp.h> 傳輸控制協議定義
-------------------------
<sys/mman.h> 內存管理聲明
<sys/select.h> Select函數
<sys/socket.h> 套接字藉口
<sys/stat.h> 文件狀態
<sys/times.h> 進程時間
<sys/types.h> 基本系統數據類型例如:size_t(signed int) off_t(long)
<sys/un.h> UNIX域套接字定義
<sys/utsname.h> 系統名
<sys/wait.h> 進程控制
------------------------------
POSIX定義的XSI擴展頭文件
<cpio.h> cpio歸檔值
<dlfcn.h> 動態鏈接
<fmtmsg.h> 消息顯示結構
<ftw.h> 文件樹漫遊
<iconv.h> 代碼集轉換使用程序
<langinfo.h> 語言信息常量
<libgen.h> 模式匹配函數定義
<monetary.h> 貨幣類型
<ndbm.h> 數據庫操作
<nl_types.h> 消息類別
<poll.h> 輪詢函數
<search.h> 搜索表
<strings.h> 字符串操作
<syslog.h> 系統出錯日誌記錄
<ucontext.h> 用戶上下文
<ulimit.h> 用戶限制
<utmpx.h> 用戶帳戶數據庫
-----------------------------
<sys/ipc.h> IPC(命名管道)
<sys/msg.h> 消息隊列
<sys/resource.h>資源操作
<sys/sem.h> 信號量
<sys/shm.h> 共享存儲
<sys/statvfs.h> 文件系統信息
<sys/time.h> 時間類型
<sys/timeb.h> 附加的日期和時間定義
<sys/uio.h> 矢量I/O操作
------------------------------
POSIX定義的可選頭文件
<aio.h> 異步I/O
<mqueue.h> 消息隊列
<pthread.h> 線程
<sched.h> 執行調度
<semaphore.h> 信號量
<spawn.h> 實時spawn接口
<stropts.h> XSI STREAMS接口
<trace.h> 事件跟蹤
3、 C/C++頭文件一覽
C
#i nclude <assert.h> //設定插入點
#i nclude <ctype.h> //字符處理
#i nclude <errno.h> //定義錯誤碼
#i nclude <float.h> //浮點數處理
#i nclude <iso646.h> //對應各種運算符的宏
#i nclude <limits.h> //定義各種數據類型最值的常量
#i nclude <locale.h> //定義本地化C函數
#i nclude <math.h> //定義數學函數
#i nclude <setjmp.h> //異常處理支持
#i nclude <signal.h> //信號機制支持
#i nclude <stdarg.h> //不定參數列表支持
#i nclude <stddef.h> //常用常量
#i nclude <stdio.h> //定義輸入/輸出函數
#i nclude <stdlib.h> //定義雜項函數及內存分配函數如malloc、free、system、atoi、atol、rand、exit等
#i nclude <string.h> //字符串處理,strlen(),strcat(),strcpy(),strcmp()等等
#i nclude <time.h> //定義關於時間的函數
#i nclude <wchar.h> //寬字符處理及輸入/輸出
#i nclude <wctype.h> //寬字符分類
傳統C++
#i nclude <fstream.h> //改用<fstream>
#i nclude <iomanip.h> //改用<iomainip>
#i nclude <iostream.h> //改用<iostream>
#i nclude <strstrea.h> //該類不再支持,改用<sstream>中的stringstream
————————————————————————————————
標準C++
#i nclude <algorithm> //STL 通用算法
#i nclude <bitset> //STL 位集容器
#i nclude <cctype> //字符處理
#i nclude <cerrno> //定義錯誤碼
#i nclude <cfloat> //浮點數處理
#i nclude <ciso646> //對應各種運算符的宏
#i nclude <climits> //定義各種數據類型最值的常量
#i nclude <clocale> //定義本地化函數
#i nclude <cmath> //定義數學函數
#i nclude <complex> //複數類
#i nclude <csignal> //信號機制支持
#i nclude <csetjmp> //異常處理支持
#i nclude <cstdarg> //不定參數列表支持
#i nclude <cstddef> //常用常量
#i nclude <cstdio> //定義輸入/輸出函數
#i nclude <cstdlib> //定義雜項函數及內存分配函數
#i nclude <cstring> //字符串處理
#i nclude <ctime> //定義關於時間的函數
#i nclude <cwchar> //寬字符處理及輸入/輸出
#i nclude <cwctype> //寬字符分類
#i nclude <deque> //STL 雙端隊列容器
#i nclude <exception> //異常處理類
#i nclude <fstream> //文件輸入/輸出
#i nclude <al> //STL 定義運算函數(代替運算符)
#i nclude <limits> //定義各種數據類型最值常量
#i nclude <list> //STL 線性列表容器
#i nclude <locale> //本地化特定信息
#i nclude <map> //STL 映射容器
#i nclude <memory> //STL通過分配器進行的內存分配
#i nclude <new> //動態內存分配
#i nclude <numeric> //STL常用的數字操作
#i nclude <iomanip> //參數化輸入/輸出
#i nclude <ios> //基本輸入/輸出支持
#i nclude <iosfwd> //輸入/輸出系統使用的前置聲明
#i nclude <iostream> //數據流輸入/輸出
#i nclude <istream> //基本輸入流
#i nclude <iterator> //STL迭代器
#i nclude <ostream> //基本輸出流
#i nclude <queue> //STL 隊列容器
#i nclude <set> //STL 集合容器
#i nclude <sstream> //基於字符串的流
#i nclude <stack> //STL 堆棧容器
#i nclude <stdexcept> //標準異常類
#i nclude <streambuf> //底層輸入/輸出支持
#i nclude <string> //字符串類
#i nclude <typeinfo> //運行期間類型信息
#i nclude <utility> //STL 通用模板類
#i nclude <valarray> //對包含值的數組的操作
#i nclude <vector> //STL 動態數組容器
————————————————————————————————
C99增加的部分
#i nclude <complex.h> //複數處理
#i nclude <fenv.h> //浮點環境
#i nclude <inttypes.h> //整數格式轉換
#i nclude <stdbool.h> //布爾環境
#i nclude <stdint.h> //整型環境
#i nclude <tgmath.h> //通用類型數學宏
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wubin1124/archive/2009/12/09/4971359.aspx
***********************************************************************************************************************************
程序在使用一個函數之前,應該首先聲明該函數。爲了便於使用,通常的做法是把同一類函數或數據結構以及常數的聲明放在一個頭文件(header file)中。頭文件中也可以包括任何相關的類型定義和宏(macros)。在程序源代碼文件中則使用預處理指令“#include”來引用相關的頭文件。
程序中如下形式的一條控制行語句將會使得該行被文件filename的內容替換掉:
# include
當然,文件名filename中不能包含 > 和換行字符以及 "、'、\、或 /* 字符。編譯系統會在定義的一系列地方搜索這個文件。類似地,下面形式的控制行會讓編譯器首先在源程序所在目錄中搜索filename文件:
# include "filename"
如果沒有找到,編譯器再執行同上面一樣的搜索過程。在這種形式中,文件名filename中不能包含換行字符和 "、'、\、或 /* 字符,但允許使用 > 字符。
在一般應用程序源代碼中,頭文件與開發環境中的庫文件有着不可分割的緊密聯繫,庫中的每個函數都需要在頭文件中加以聲明。應用程序開發環境中的頭文件(通常放置在系統/usr/include/目錄中)可以看作是其所提供函數庫(例如libc.a)中函數的一個組成部分,是庫函數的使用說明或接口聲明。在編譯器把源代碼程序轉換成目標模塊後,鏈接程序(linker)會把程序所有的目標模塊組合在一起,包括用到的任何庫文件中的模塊。從而構成一個可執行的程序。
對於標準C函數庫來講,其最基本的頭文件有15個。每個頭文件都表示出一類特定函數的功能說明或結構定義,例如I/O操作函數、字符處理函數等。有關標準函數庫的詳細說明及其實現可參照Plauger編著的《The Standard C Library》一書。
而對於本書所描述的內核源代碼,其中涉及的頭文件則可以看作是對內核及其函數庫所提供服務的一個概要說明,是內核及其相關程序專用的頭文件。在這些頭文件中主要描述了內核所用到的所有數據結構、初始化數據、常數和宏定義,也包括少量的程序代碼。除了幾個專用的頭文件以外(例如塊設備頭文件blk.h),Linux 0.12內核中所用到的頭文件都放在內核代碼樹的include/目錄中。因此編譯Linux 0.12內核無需使用開發環境提供的位於/usr/include/目錄下的任何頭文件。當然,tools/build.c程序除外。因爲這個程序雖然被包含在內核源代碼樹中,但它只是一個用於組合創建內核映像文件的工具程序或應用程序,不會被鏈接到內核代碼中。
從0.95版開始,內核代碼樹中的頭文件需要複製到/usr/include/linux目錄下才能順利地編譯內核。即從該版內核開始頭文件已經與開發環境使用的頭文件合二爲一。