linux函數源碼
㈠ linux中C語言的一個函數的源代碼:socket 編程中的 recv() 函數。
1、recv是socket編程中最常用的函數之一,在阻塞狀態的recv有時候會返回不同的值,而對於錯誤值也有相應的錯誤碼,分別對應不同的狀態。
2、recv函數只是在用戶空間定義的。內核空間有與之對應的函數,也就是說,執行recv函數就會調用到內核中與它對應的函數,實際起作用的就是內核里的這個函數。至於內核里調用的是那個函數,內核里的調用關系復雜的很,除非對內核非常了解的,才會找到到底是怎麼調用的,他也是只是找到怎麼調用的。
㈡ 小技巧之查看Linux系統函數頭文件
分享一個小技巧。
我們在寫Linux應用程序時,有時候記不清某個系統函數的頭文件,往往要麼網路,要麼查源碼,這樣做都不方便,費時費力。
其實,可以用一個命令搞定:man。
比如,我要查sleep函數的頭文件,在終端下敲命令: man sleep ,輸出信息:
並沒有發現頭文件!但是,請看紅框里的內容,意思是當前顯示的只是sleep手冊的第1頁,還有第3頁可以參考,繼續輸命令 man 3 sleep ,輸出信息:
看紅框中的內容,是不就看到sleep函數的頭文件及函數原型定義了!
查看read函數頭文件,同樣的,輸入 man read ,直接可以查到:
是不是很方便啊!!!
㈢ 如何查看linux命令源代碼和函數源代碼
1. 以搜索ls命令源碼為例,先搜索命令所在包,命令如下:
lpj@lpj-linux:~$ which ls
/bin/ls
2. 用命令搜索該軟體所在包,代碼如下:
lpj@lpj-linux:~$ dpkg -S /bin/ls
coreutils: /bin/ls
3. 從上一步中可以知道ls命令的實現在包coreutils中,用apt安裝(說安裝有些歧義,主要是區分apt-get -d)該包的源代碼然後解壓,代碼如下:
sudo apt-get source coreutils
cd /usr/src/coreutils-XXX #XXX表示版本號
sudo tar zxvf coreutils-XXX.tar.gz
或者只下載源碼,然後手動打補丁再解壓,代碼如下:
sudo apt-get -d source coreutils
cd /usr/src
tar zxvf coreutils-XXX.tar.gz
gzip -d coreutils-XXX.diff.gz #這一步會生成coreutils-XXX.diff文件
patch -p0 < coreutils-XXX.diff
cd coreutils-XXX
tar zxvf coreutils-XXX.tar.gz
OK,這幾步執行完後,就可以進入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令對應的源代碼了
㈣ Linux進程轉換狀態函數源代碼怎樣獲取
可以使用google代碼搜索,http://code.google.com/intl/zh-CN/
幫你找了一下下,
http://www.google.cn/codesearch/p?hl=zh-CN#7_68JW9_sJ8/linux/kernel/fork.c&q=sys_exit()
進去找就有了
㈤ linux下怎麼查看c函數庫的源代碼
頭文件在/usr/include/sys/time.h
如果要看定義,下載glibc的源代碼。
㈥ 怎麼在linux中查看庫函數源代碼
linux中查看庫函數源代碼,需要自己手動下載一個gnu libc源代碼庫。然後在裡面查,可以使用vim建立個ctags,然後及時定位到相應的函數即可。