注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡操作系統(tǒng)Linux環(huán)境編程:從應用到內(nèi)核

Linux環(huán)境編程:從應用到內(nèi)核

Linux環(huán)境編程:從應用到內(nèi)核

定 價:¥99.00

作 者: 高峰
出版社: 機械工業(yè)出版社
叢編項:
標 簽: LINUX 操作系統(tǒng)/系統(tǒng)開發(fā) 計算機/網(wǎng)絡

ISBN: 9787111536109 出版時間: 2016-06-01 包裝: 平裝
開本: 16開 頁數(shù): 596 字數(shù):  

內(nèi)容簡介

  本書將按照APUE的脈絡,以筆者多年的Linux開發(fā)經(jīng)驗為基礎,從以下四個方面深入講解Linux環(huán)境編程:接口的功能使用介紹、接口缺陷分析、接口的內(nèi)部實現(xiàn)機制、接口的錯誤碼分析。本書將從一個全新的角度帶領讀者重新進入Linux環(huán)境編程,從應用出發(fā),深入內(nèi)核源碼,研究Linux各接口的工作機制和原理。讓讀者不僅知其然,還知其所以然。

作者簡介

暫缺《Linux環(huán)境編程:從應用到內(nèi)核》作者簡介

圖書目錄

目  錄 Contents前 言第0章 基礎知識10.1 一個Linux程序的誕生記10.2 程序的構(gòu)成20.3 程序是如何“跑”的40.4 背景概念介紹50.4.1 系統(tǒng)調(diào)用50.4.2 C庫函數(shù)60.4.3 線程安全70.4.4 原子性90.4.5 可重入函數(shù)90.4.6 阻塞與非阻塞110.4.7 同步與非同步11第1章 文件I/O121.1 Linux中的文件121.1.1 文件、文件描述符和文件表121.1.2 內(nèi)核文件表的實現(xiàn)131.2 打開文件141.2.1 open介紹141.2.2 更多選項151.2.3 open源碼跟蹤161.2.4 如何選擇文件描述符171.2.5 文件描述符fd與文件管理結(jié)構(gòu)file181.3 creat簡介191.4 關閉文件191.4.1 close介紹191.4.2 close源碼跟蹤191.4.3 自定義files_operations211.4.4 遺忘close造成的問題221.4.5 如何查找文件資源泄漏251.5 文件偏移261.5.1 lseek簡介261.5.2 小心lseek的返回值261.5.3 lseek源碼分析271.6 讀取文件291.6.1 read源碼跟蹤291.6.2 部分讀取301.7 寫入文件311.7.1 write源碼跟蹤311.7.2 追加寫的實現(xiàn)331.8 文件的原子讀寫331.9 文件描述符的復制341.10 文件數(shù)據(jù)的同步381.11 文件的元數(shù)據(jù)411.11.1 獲取文件的元數(shù)據(jù)411.11.2 內(nèi)核如何維護文件的元數(shù)據(jù)421.11.3 權(quán)限位解析431.12 文件截斷451.12.1 truncate與ftruncate的簡單介紹451.12.2 文件截斷的內(nèi)核實現(xiàn)451.12.3 為什么需要文件截斷48第2章 標準I/O庫502.1 stdin、stdout和stderr502.2 I/O緩存引出的趣題512.3 fopen和open標志位對比522.4 fdopen與fileno552.5 同時讀寫的痛苦562.6 ferror的返回值572.7 clearerr的用途572.8 小心fgetc和getc602.9 注意fread和fwrite的返回值602.10 創(chuàng)建臨時文件61第3章 進程環(huán)境663.1 main是C程序的開始嗎663.2 “活雷鋒”exit703.3 atexit介紹753.3.1 使用atexit753.3.2 atexit的局限性763.3.3 atexit的實現(xiàn)機制773.4 小心使用環(huán)境變量783.5 使用動態(tài)庫803.5.1 動態(tài)庫與靜態(tài)庫803.5.2 編譯生成和使用動態(tài)庫803.5.3 程序的“平滑無縫”升級823.6 避免內(nèi)存問題843.6.1 尷尬的realloc843.6.2 如何防止內(nèi)存越界853.6.3 如何定位內(nèi)存問題863.7 “長跳轉(zhuǎn)”longjmp903.7.1 setjmp與longjmp的使用903.7.2 “長跳轉(zhuǎn)”的實現(xiàn)機制913.7.3 “長跳轉(zhuǎn)”的陷阱93第4章 進程控制:進程的一生964.1 進程ID964.2 進程的層次984.2.1 進程組994.2.2 會話1024.3 進程的創(chuàng)建之fork()1034.3.1 fork之后父子進程的內(nèi)存關系1044.3.2 fork之后父子進程與文件的關系1074.3.3 文件描述符復制的內(nèi)核實現(xiàn)1104.4 進程的創(chuàng)建之vfork()1154.5 daemon進程的創(chuàng)建1174.6 進程的終止1194.6.1 _exit函數(shù)1194.6.2 exit函數(shù)1204.6.3 return退出1224.7 等待子進程1224.7.1 僵尸進程1224.7.2 等待子進程之wait()1244.7.3 等待子進程之waitpid()1264.7.4 等待子進程之等待狀態(tài)值1294.7.5 等待子進程之waitid()1314.7.6 進程退出和等待的內(nèi)核實現(xiàn)1334.8 exec家族1414.8.1 execve函數(shù)1414.8.2 exec家族1424.8.3 execve系統(tǒng)調(diào)用的內(nèi)核實現(xiàn)1444.8.4 exec與信號1514.8.5 執(zhí)行exec之后進程繼承的屬性1524.9 system函數(shù)1524.9.1 system函數(shù)接口1534.9.2 system函數(shù)與信號1564.10 總結(jié)157第5章 進程控制:狀態(tài)、調(diào)度和優(yōu)先級1585.1 進程的狀態(tài)1585.1.1 進程狀態(tài)概述1595.1.2 觀察進程狀態(tài)1715.2 進程調(diào)度概述1735.3 普通進程的優(yōu)先級1815.4 完全公平調(diào)度的實現(xiàn)1865.4.1 時間片和虛擬運行時間1865.4.2 周期性調(diào)度任務1905.4.3 新進程的加入1925.4.4 睡眠進程醒來1985.4.5 喚醒搶占2025.5 普通進程的組調(diào)度2045.6 實時進程2075.6.1 實時調(diào)度策略和優(yōu)先級2075.6.2 實時調(diào)度相關API2115.6.3 限制實時進程運行時間2135.7 CPU的親和力214第6章 信號2196.1 信號的完整生命周期2196.2 信號的產(chǎn)生2206.2.1 硬件異常2206.2.2 終端相關的信號2216.2.3 軟件事件相關的信號2236.3 信號的默認處理函數(shù)2246.4 信號的分類2276.5 傳統(tǒng)信號的特點2286.5.1 信號的ONESHOT特性2306.5.2 信號執(zhí)行時屏蔽自身的特性2326.5.3 信號中斷系統(tǒng)調(diào)用的重啟特性2336.6 信號的可靠性2366.6.1 信號的可靠性實驗2366.6.2 信號可靠性差異的根源2406.7 信號的安裝2436.8 信號的發(fā)送2466.8.1 kill、tkill和tgkill2466.8.2 raise函數(shù)2476.8.3 sigqueue函數(shù)2476.9 信號與線程的關系2536.9.1 線程之間共享信號處理函數(shù)2546.9.2 線程有獨立的阻塞信號掩碼2556.9.3 私有掛起信號和共享掛起信號2576.9.4 致命信號下,進程組全體退出2606.10 等待信號2606.10.1 pause函數(shù)2616.10.2 sigsuspend函數(shù)2626.10.3 sigwait函數(shù)和sigwaitinfo函數(shù)2636.11 通過文件描述符來獲取信號2656.12 信號遞送的順序2676.13 異步信號安全2726.14 總結(jié)275第7章 理解Linux線程(1)2767.1 線程與進程2767.2 進程ID和線程ID2817.3 pthread庫接口介紹2847.4 線程的創(chuàng)建和標識2857.4.1 pthread_create函數(shù)2857.4.2 線程ID及進程地址空間布局2867.4.3 線程創(chuàng)建的默認屬性2917.5 線程的退出2927.6 線程的連接與分離2937.6.1 線程的連接2937.6.2 為什么要連接退出的線程2957.6.3 線程的分離2997.7 互斥量3007.7.1 為什么需要互斥量3007.7.2 互斥量的接口3047.7.3 臨界區(qū)的大小3057.7.4 互斥量的性能3067.7.5 互斥鎖的公平性3107.7.6 互斥鎖的類型3117.7.7 死鎖和活鎖3147.8 讀寫鎖3167.8.1 讀寫鎖的接口3177.8.2 讀寫鎖的競爭策略3187.8.3 讀寫鎖總結(jié)3237.9 性能殺手:偽共享3237.10 條件等待3287.10.1 條件變量的創(chuàng)建和銷毀3287.10.2 條件變量的使用329第8章 理解Linux線程(2)3338.1 線程取消3338.1.1 函數(shù)取消接口3338.1.2 線程清理函數(shù)3358.2 線程局部存儲3398.2.1 使用NPTL庫函數(shù)實現(xiàn)線程局部存儲3408.2.2 使用__thread關鍵字實現(xiàn)線程局部存儲3428.3 線程與信號3438.3.1 設置線程的信號掩碼3448.3.2 向線程發(fā)送信號3448.3.3 多線程程序?qū)π盘柕奶幚?458.4 多線程與fork()345第9章 進程間通信:管道3499.1 管道3519.1.1 管道概述3519.1.2 管道接口3529.1.3 關閉未使用的管道文件描述符3569.1.4 管道對應的內(nèi)存區(qū)大小3619.1.5 shell管道的實現(xiàn)3619.1.6 與shell命令進行通信(popen)3629.2 命名管道FIFO3659.2.1 創(chuàng)建FIFO文件3659.2.2 打開FIFO文件3669.3 讀寫管道文件3679.4 使用管道通信的示例372第10章 進程間通信:System V IPC37510.1 System V IPC概述37510.1.1 標識符與IPC Key37610.1.2 IPC的公共數(shù)據(jù)結(jié)構(gòu)37910.2 System V消息隊列38310.2.1 創(chuàng)建或打開一個消息隊列38310.2.2 發(fā)送消息38510.2.3 接收消息38810.2.4 控制消息隊列39010.3 System V信號量39110.3.1 信號量概述39110.3.2 創(chuàng)建或打開信號量39310.3.3 操作信號量39510.3.4 信號量撤銷值39910.3.5 控制信號量40010.4 System V共享內(nèi)存40210.4.1 共享內(nèi)存概述40210.4.2 創(chuàng)建或打開共享內(nèi)存40310.4.3 使用共享內(nèi)存40510.4.4 分離共享內(nèi)存40710.4.5 控制共享內(nèi)存408第11章 進程間通信:POSIX IPC41011.1 POSIX IPC概述41111.1.1 IPC對象的名字41111.1.2 創(chuàng)建或打開IPC對象41311.1.3 關閉和刪除IPC對象41411.1.4 其他41411.2 POSIX消息隊列41511.2.1 消息隊列的創(chuàng)建、打開、關閉及刪除41511.2.2 消息隊列的屬性41811.2.3 消息的發(fā)送和接收42211.2.4 消息的通知42311.2.5 I/O多路復用監(jiān)控消息隊列42711.3 POSIX信號量42811.3.1 創(chuàng)建、打開、關閉和刪除有名信號量43011.3.2 信號量的使用43111.3.3 無名信號量的創(chuàng)建和銷毀43211.3.4 信號量與futex43311.4 內(nèi)存映射mmap43611.4.1 內(nèi)存映射概述43611.4.2 內(nèi)存映射的相關接口43811.4.3 共享文件映射43911.4.4 私有文件映射45511.4.5 共享匿名映射45511.4.6 私有匿名映射45611.5 POSIX共享內(nèi)存45611.5.1 共享內(nèi)存的創(chuàng)建、使用和刪除45711.5.2 共享內(nèi)存與tmpfs458第12章 網(wǎng)絡通信:連接的建立46212.1 socket文件描述符46212.2 綁定IP地址46312.2.1 bind的使用46412.2.2 bind的源碼分析46512.3 客戶端連接過程46812.3.1 connect的使用46812.3.2 connect的源碼分析46912.4 服務器端連接過程47712.4.1 listen的使用47712.4.2 listen的源碼分析47812.4.3 accept的使用48012.4.4 accept的源碼分析48012.5 TCP三次握手的實現(xiàn)分析48312.5.1 SYN包的發(fā)送48312.5.2 接收SYN包,發(fā)送SYN+ACK包48512.5.3 接收SYN+ACK數(shù)據(jù)包49412.5.4 接收ACK數(shù)據(jù)包,完成三次握手499第13章 網(wǎng)絡通信:數(shù)據(jù)報文的發(fā)送50513.1 發(fā)送相關接口50513.2 數(shù)據(jù)包從用戶空間到內(nèi)核空間的流程50613.3 UDP數(shù)據(jù)包的發(fā)送流程51013.4 TCP數(shù)據(jù)包的發(fā)送流程51713.5 IP數(shù)據(jù)包的發(fā)送流程52713.5.1 ip_send_skb源碼分析52813.5.2 ip_queue_xmit源碼分析53113.6 底層模塊數(shù)據(jù)包的發(fā)送流程532第14章 網(wǎng)絡通信:數(shù)據(jù)報文的接收53614.1 系統(tǒng)調(diào)用接口53614.2 數(shù)據(jù)包從內(nèi)核空間到用戶空間的流程53714.3 UDP數(shù)據(jù)包的接收流程54014.4 TCP數(shù)據(jù)包的接收流程54414.5 TCP套接字的三個接收隊列55314.6 從網(wǎng)卡到套接字55614.6.1 從硬中斷到軟中斷55614.6.2 軟中斷處理55714.6.3 傳遞給協(xié)議棧流程55914.6.4 IP協(xié)議處理流程56414.6.5 大師的錯誤?原始套接字的接收56814.6.6 注冊傳輸層協(xié)議57114.6.7 確定UDP套接字57114.6.8 確定TCP套接字576第15章 編寫安全無錯代碼58215.1 不要用memcmp比較結(jié)構(gòu)體58215.2 有符號數(shù)和無符號數(shù)的移位區(qū)別58315.3 數(shù)組和指針58415.4 再論數(shù)組首地址58715.5 “神奇”的整數(shù)類型轉(zhuǎn)換58815.6 小心volatile的原子性誤解58915.7 有趣的問題:“x == x”何時為假?59115.8 小心浮點陷阱59315.8.1 浮點數(shù)的精度限制59315.8.2 兩個特殊的浮點值59315.9 Intel移位指令陷阱595

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號