注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)操作系統(tǒng)LinuxLinux 應(yīng)用程序開發(fā)

Linux 應(yīng)用程序開發(fā)

Linux 應(yīng)用程序開發(fā)

定 價:¥59.00

作 者: (美)約翰遜(Johnson, M.K.), (美)特羅安(Troan, E.W.)著;武延軍, 郭松柳譯
出版社: 電子工業(yè)出版社
叢編項:
標(biāo) 簽: Linux操作系統(tǒng) 程序設(shè)計

ISBN: 9787121017957 出版時間: 2005-11-01 包裝: 膠版紙
開本: 小32開 頁數(shù): 490頁 字?jǐn)?shù):  

內(nèi)容簡介

本書介紹了Linux環(huán)境下進(jìn)行應(yīng)用程序開發(fā)需要掌握的知識,對許多編程實踐中經(jīng)常遇到的內(nèi)容進(jìn)行了詳細(xì)的講解,并且提供了典型的實例加以說明。 全書分為四個部分。第1部分是初學(xué)者需要了解的知識,包括Linux的歷史、從事自由軟件開發(fā)需要了解的版權(quán)知識和GPL等許可證,以及如何獲取和使用在線文檔系統(tǒng)。第2部分介紹了開發(fā)環(huán)境和工具。其中包括Vi,emacs編輯器,gdb調(diào)試器的使用,gcc的選項和擴展,GNU C庫的基本知識,內(nèi)存溢出和泄漏的調(diào)試工具,如何創(chuàng)建、使用、管理靜態(tài)庫和動態(tài)庫,以及如何通過系統(tǒng)調(diào)用請求系統(tǒng)服務(wù)。第3部分詳細(xì)介紹了Linux系統(tǒng)編程知識。其中包括進(jìn)程模型,簡單文件管理,信號處理,高級文件操作,目錄操作,作業(yè)控制,終端與偽終端,socket網(wǎng)絡(luò),時I司和定時器,隨機數(shù),虛擬控制臺,Linux控制臺,以及如何編寫安全的程序。第4部分精選了Linux編程中最常用的開發(fā)庫進(jìn)行介紹。其中包括字符串匹配,用于終端編程的S-lang庫,基于散列的數(shù)據(jù)庫函數(shù)庫,命令行解析庫,如何運行時動態(tài)加載共享對象,以及有關(guān)用戶身份識別和驗證的庫。 本書內(nèi)容豐富、實用,語言通俗,不僅適合初學(xué)者學(xué)習(xí),也適合熟悉Unix環(huán)境編程的高級開發(fā)人員參考。

作者簡介

  MichaelK.Johson是Specifix的操作系統(tǒng)工程師。他曾是RedHat的操作系統(tǒng)開發(fā)人員,在那里他管理一個內(nèi)核開發(fā)小組長達(dá)3年半,是Fedora項目基礎(chǔ)技術(shù)的領(lǐng)導(dǎo)。他也曾做過有關(guān)Linux應(yīng)用程序開發(fā)的全日制的教學(xué)工作。ErikW.Troan是Specifix的操作系統(tǒng)的合伙創(chuàng)始人和執(zhí)行副總裁。他曾經(jīng)是RedHat產(chǎn)品工程部的副總裁,負(fù)責(zé)規(guī)格描述和創(chuàng)建技術(shù),例如RPM、Linux操作系統(tǒng),RedHat網(wǎng)絡(luò)、高性能服務(wù)器以及RedHat網(wǎng)站的基礎(chǔ)設(shè)施。

圖書目錄

第1部分  起步
第1章  Linux的發(fā)展歷史    2
1.1  自由Unix軟件簡史    3
1.2  Linux的發(fā)展    4
1.3  Unix系統(tǒng)的概念譜系    5
1.4  Linux譜系    7
第2章  許可證和版權(quán)    8
2.1  版權(quán)    8
2.2  許可    10
2.3  自由軟件許可證    10
2.3.1  GNU通用公共許可證    11
2.3.2  GNU庫通用公共許可證    12
2.3.3  MIT/X/BSD風(fēng)格的許可證    12
2.3.4  舊BSD風(fēng)格的許可證    12
2.3.5  藝術(shù)許可證    12
2.3.6  許可證的不兼容性    13
第3章  在線系統(tǒng)文檔    14
3.1  man手冊頁    14
3.2  info手冊頁    15
3.3  其他文檔    15
第2部分  開發(fā)工具和環(huán)境
第4章  開發(fā)工具    18
4.1  編輯器    19
4.1.1  Emacs    20
4.1.2  vi    21
4.2  Make    21
4.2.1  復(fù)雜命令行    24
4.2.2  變量    25
4.2.3  后綴規(guī)則    26
4.3  GNU的調(diào)試器    27
4.4  跟蹤程序行為    31
第5章  gcc的選項和擴展    33
5.1  gcc選項    33
5.2  頭文件    36
5.2.1  long long    36
5.2.2  內(nèi)嵌函數(shù)    36
5.2.3  可選擇的擴展關(guān)鍵字    36
5.2.4  特征    37
第6章  GNC的C語言庫    38
6.1  特征選擇    38
6.2  POSIX接口    40
6.2.1  POSIX要求的類型    40
6.2.2  發(fā)現(xiàn)運行時的權(quán)能    42
6.2.3  查找和設(shè)置基本系統(tǒng)信息    43
6.3  兼容性    45
第7章  內(nèi)存調(diào)試工具    46
7.1  存在Bug的代碼    46
7.2  glibc的內(nèi)存檢查工具    48
7.2.1  發(fā)現(xiàn)內(nèi)存堆的損壞    49
7.2.2  使用mtrace()來跟蹤分配情況    52
7.3  利用mpr找到內(nèi)存泄露    53
7.4  利用valgrind發(fā)現(xiàn)內(nèi)存錯誤    55
7.5  電網(wǎng)    60
7.5.1  使用電網(wǎng)    61
7.5.2  內(nèi)存對齊    61
7.5.3  其他特性    63
7.5.4  局限性    63
7.5.5  資源消耗    63
第8章  創(chuàng)建和使用庫    65
8.1  靜態(tài)庫    65
8.2  共享庫    66
8.3  設(shè)計共享庫    67
8.3.1  管理兼容性    67
8.3.2  不兼容的庫    68
8.3.3  設(shè)計兼容的庫    68
8.4  構(gòu)造共享庫    69
8.5  安裝共享庫    70
例子    71
8.6  使用共享庫    72
8.6.1  使用無須安裝的庫    73
8.6.2  提前裝載庫    73
第9章  Linux系統(tǒng)環(huán)境    75
9.1  進(jìn)程環(huán)境    75
9.2  理解系統(tǒng)調(diào)用    76
9.2.1  系統(tǒng)調(diào)用的限制    77
9.2.2  系統(tǒng)調(diào)用的返回碼    77
9.2.3  使用系統(tǒng)調(diào)用    79
9.2.4  通用錯誤返回碼    80
9.3  查找頭文件和庫文件    85
第3部分  系統(tǒng)編程
第10章  進(jìn)程模型    88
10.1  定義進(jìn)程    88
10.1.1  使用線程的復(fù)雜性    88
10.1.2  Linux的方式    89
10.2  進(jìn)程屬性    89
10.2.1  pid及其生成    89
10.2.2  信用狀    90
10.2.3  文件系統(tǒng)用戶標(biāo)識符    94
10.2.4  關(guān)于uid和gid的總結(jié)    95
10.3  進(jìn)程信息    96
10.3.1  程序參數(shù)    97
10.3.2  資源的使用    98
10.3.3  建立使用限制    100
10.4  進(jìn)程基本元素    101
10.4.1  創(chuàng)建子進(jìn)程    102
10.4.2  等待子進(jìn)程結(jié)束    103
10.4.3  運行新程序    104
10.4.4  用vfork()更快速地創(chuàng)建進(jìn)程    106
10.4.5  自我終止    107
10.4.6  終止其他進(jìn)程    107
10.4.7  轉(zhuǎn)儲內(nèi)核文件信息    109
10.5  簡單子進(jìn)程    109
10.5.1  用system()運行和等待    109
10.5.2  從進(jìn)程讀或?qū)?nbsp;   110
10.6  會話和進(jìn)程組    112
10.6.1  會話    113
10.6.2  控制終端    113
10.6.3  進(jìn)程組    113
10.6.4  孤兒進(jìn)程組    114
10.7  介紹ladsh    115
用ladsh運行外部程序    116
10.8  創(chuàng)建克隆    129
第11章  簡單的文件管理    130
11.1  文件模式    132
11.1.1  文件訪問權(quán)限    133
11.1.2  文件權(quán)限修飾符    134
11.1.3  文件類型    136
11.1.4  進(jìn)程的umask    137
11.2  基本的文件操作    138
11.2.1  文件描述符    138
11.2.2  關(guān)閉文件    139
11.2.3  在文件系統(tǒng)中打開文件    139
11.2.4  文件的讀、寫以及位置
11.2.4  指針的移動    141
11.2.5  局部讀和寫    145
11.2.6  縮短文件    147
11.2.7  同步文件    147
11.2.8  其他操作    148
11.3  查詢和修改Inode信息    149
11.3.1  查找Inode信息    149
11.3.2  一個使用stat()的簡單示例    150
11.3.3  輕松確定訪問權(quán)限    152
11.3.4  改變文件的訪問權(quán)限    153
11.3.5  改變文件的所有者和組    153
11.3.6  改變文件的時間戳    154
11.3.7  Ext3擴展屬性    155
11.4  操作目錄項    159
11.4.1  創(chuàng)建設(shè)備文件以及命名管道的目錄項    160
11.4.2  創(chuàng)建硬鏈接    162
11.4.3  使用符號鏈接    163
11.4.4  刪除文件    164
11.4.5  重命名文件    164
11.5  操作文件描述符    165
11.5.1  改變打開文件的訪問模式    165
11.5.2  修改close-on-exec標(biāo)志    166
11.5.3  復(fù)制文件描述符    166
11.6  創(chuàng)建無名管道    167
11.7  對ladsh添加重定向    168
11.7.1  數(shù)據(jù)結(jié)構(gòu)    168
11.7.2  修改代碼    169
第12章  信號處理    172
12.1  信號的概念    173
12.1.1  信號的生命周期    173
12.1.2  簡單信號    173
12.1.3  可靠信號    175
12.1.4  信號和系統(tǒng)調(diào)用    176
12.2  Linux(和POSIX)信號系統(tǒng)的API    177
12.2.1  發(fā)送信號    177
12.2.2  使用sigset_t    178
12.2.3  捕捉信號    178
12.2.4  操作一個進(jìn)程的信號掩碼    180
12.2.5  找到等待信號的集合    182
12.2.6  等待信號    182
12.3  有效信號    183
描述信號    187
12.4  編寫信號處理程序    188
12.5  重新打開日志文件    190
12.6  實時信號    193
信號隊列和排序    193
12.7  獲取信號的信息    196
12.7.1  得到一個信號的上下文    196
12.7.2  使用信號發(fā)送數(shù)據(jù)    202
第13章  高級文件操作    205
13.1  多路輸入輸出    205
13.1.1  非阻塞I/O    208
13.1.2  用poll()的多路傳輸    209
13.1.3  使用select()的多路傳輸    213
13.1.4  比較poll()和select()    217
13.1.5  使用epoll進(jìn)行多路傳輸    220
13.1.6  比較poll()和epoll    225
13.2  內(nèi)存映射    229
13.2.1  頁對齊    230
13.2.2  建立內(nèi)存映射    230
13.2.3  撤銷映射區(qū)域    235
13.2.4  同步內(nèi)存區(qū)域到磁盤    235
13.2.5  鎖定內(nèi)存區(qū)域    236
13.3  文件鎖定    237
13.3.1  文件鎖    238
13.3.2  記錄鎖    239
13.3.3  強制鎖    245
13.3.4  租賃文件    245
13.4  read()和write()的替代方法    249
13.4.1  分散/聚集的讀和寫    249
13.4.2  忽略文件指針    251
第14章  目錄操作    253
14.1  當(dāng)前工作目錄    253
14.1.1  查找當(dāng)前工作目錄    253
14.1.2  特殊文件“.”和“..”    255
14.1.3  當(dāng)前目錄    255
14.2  改變根目錄    256
14.3  創(chuàng)建和刪除目錄    256
14.3.1  創(chuàng)建新目錄    256
14.3.2  刪除目錄    257
14.4  讀取目錄的內(nèi)容    257
再次讀取目錄內(nèi)容    259
14.5  文件名匹配搜索    259
14.5.1  使用子進(jìn)程    260
14.5.2  內(nèi)在匹配搜索    261
14.6  為ladsh增加目錄和匹配功能    265
14.6.1  增加cd和pwd    266
14.6.2  增加文件名匹配查詢    267
14.7  遍歷文件系統(tǒng)的樹結(jié)構(gòu)    270
14.7.1  使用ftw()    270
14.7.2  用nftw()函數(shù)進(jìn)行文件樹遍歷    272
14.7.3  實現(xiàn)find功能    274
14.8  目錄變更提示    276
第15章  作業(yè)控制    284
15.1  作業(yè)控制基礎(chǔ)    284
15.1.1  重新啟動進(jìn)程    284
15.1.2  停止進(jìn)程    285
15.1.3  處理作業(yè)控制信號    285
15.2  ladsh中的作業(yè)控制    287
第16章  終端與偽終端    293
16.1  tty操作    294
16.1.1  終端實用函數(shù)    294
16.1.2  控制終端    295
16.1.3  終端所有權(quán)    296
16.1.4  用utemper工具進(jìn)行記錄    297
16.1.5  手工記錄    298
16.2  termios概述    308
16.3  termios實例    309
16.3.1  密碼    309
16.3.2  串行通信    311
16.4  termios調(diào)試    325
16.5  termios參考    326
16.5.1  函數(shù)    327
16.5.2  窗口尺寸    330
16.5.3  標(biāo)志位    331
16.5.4  輸入模式標(biāo)記    332
16.5.5  輸出模式標(biāo)記    334
16.5.6  控制模式標(biāo)記    335
16.5.7  控制模式字符    336
16.5.8  本地模式標(biāo)記    338
16.5.9  控制read()    340
16.6  偽終端    341
16.6.1  打開偽終端    342
16.6.2  打開偽終端的簡單方法    343
16.6.3  打開偽終端的復(fù)雜方法    344
16.6.4  偽終端范例    348
第17章  socket網(wǎng)絡(luò)    358
17.1  協(xié)議支持    358
17.1.1  理想的網(wǎng)絡(luò)    358
17.1.2  實際的網(wǎng)絡(luò)    359
17.1.3  讓實際的網(wǎng)絡(luò)變得理想    360
17.1.4  地址    360
17.2  實用函數(shù)    361
17.3  基本套接字操作    362
17.3.1  建立一個套接字    362
17.3.2  建立連接    364
17.3.3  將地址綁定到套接字    364
17.3.4  等待連接    364
17.3.5  連接到一個服務(wù)器    365
17.3.6  找到連接地址    366
17.4  Unix域套接字    367
17.4.1  Unix域地址    367
17.4.2  等待一個連接    368
17.4.3  連接到一個服務(wù)器    370
17.4.4  運行Unix域的示例    371
17.4.5  未命名的Unix域套接字    371
17.4.6  傳遞文件描述符    372
17.5  基于TCP/IP協(xié)議的聯(lián)網(wǎng)機器    377
17.5.1  字節(jié)存儲順序    377
17.5.2  IPv4地址    378
17.5.3  IPv6地址    380
17.5.4  IP地址的操作    382
17.5.5  轉(zhuǎn)換名稱到地址    384
17.5.6  轉(zhuǎn)換地址到名稱    395
17.5.7  監(jiān)聽TCP連接    400
17.5.8  TCP客戶端應(yīng)用程序    403
17.6  使用UDP數(shù)據(jù)報    404
17.6.1  創(chuàng)建一個UDP套接字    405
17.6.2  發(fā)送和接收數(shù)據(jù)報    406
17.6.3  一個簡單的tftp服務(wù)器    407
17.7  套接字錯誤    413
17.8  舊的網(wǎng)絡(luò)函數(shù)    415
17.8.1  IPv4地址操作    415
17.8.2  主機名解析    417
17.8.3  舊的主機信息查找范例    418
17.8.4  查找端口號    420
第18章  時間    423
18.1  獲取時間和日期    423
18.1.1  時間和日期的表示    423
18.1.2  時間的轉(zhuǎn)換,格式化和解析    426
18.1.3  時間的限制    429
18.2  使用計時器    431
18.2.1  休眠    431
18.2.2  間隔計時器    432
第19章  隨機數(shù)    436
19.1  偽隨機數(shù)    436
19.2  密碼系統(tǒng)和隨機數(shù)    437
第20章  虛擬控制臺編程    439
20.1  起步    440
20.2  發(fā)出峰鳴聲    442
20.3  判斷終端是否為虛擬控制臺    443
20.4  查找當(dāng)前虛擬控制臺    443
20.5  管理虛擬控制臺的切換    444
20.6  范例:open命令    447
第21章  Linux控制臺    449
21.1  權(quán)能數(shù)據(jù)庫    450
21.2  圖標(biāo),字符和映射    451
21.3  Linux控制臺權(quán)能    452
21.3.1  控制字符    453
21.3.2  轉(zhuǎn)義字符序列    454
21.3.3  測試序列    455
21.3.4  復(fù)雜轉(zhuǎn)義字符序列    456
21.4  直接寫屏幕    461
第22章  編寫安全程序    464
22.1  安全何時重要    464
安全何時失效    465
22.2  最小化攻擊時機    466
22.2.1  放棄權(quán)限    466
22.2.2  采用輔助手段    467
22.2.3  限制文件系統(tǒng)的訪問    468
22.3  常見的安全漏洞    469
22.3.1  緩沖區(qū)溢出    469
22.3.2  解析文件名    474
22.3.3  環(huán)境變量    474
22.3.4  運行Shell    475
22.3.5  創(chuàng)建臨時文件    476
22.3.6  競爭狀態(tài)和信號處理    478
22.3.7  關(guān)閉文件描述符    478
22.4  作為守護(hù)進(jìn)程運行    479
第4部分  開發(fā)庫
第23章  字符串的匹配    482
23.1  匹配任意字符串    482
23.2  正則表達(dá)式    483
23.2.1  Linux正則表達(dá)式    483
23.2.2  正則表達(dá)式的匹配    484
23.2.3  一個簡單的grep示例    489
第24章  用S-Lang來處理終端    495
24.1  輸入處理    495
24.1.1  初始化S-Lang的輸入處理    496
24.1.2  恢復(fù)終端狀態(tài)    497
24.1.3  從終端讀取字符    497
24.1.4  檢查未決的輸入    498
24.2  輸出處理    498
24.2.1  初始化屏幕管理    499
24.2.2  更新顯示    499
24.2.3  移動光標(biāo)    499
24.2.4  結(jié)束屏幕管理    500
24.2.5  屏幕管理的框架程序    500
24.2.6  切換字符集    501
24.2.7  輸出到屏幕    502
24.2.8  畫線和畫矩形    503
24.2.9  使用顏色    505
第25章  基于散列的數(shù)據(jù)庫函數(shù)庫    508
25.1  概述    508
25.2  基本操作    509
25.2.1  打開qdbm文件    509
25.2.2  關(guān)閉數(shù)據(jù)庫    510
25.2.3  獲得文件描述符    511
25.2.4  同步數(shù)據(jù)庫    511
25.3  讀取記錄    512
25.3.1  讀取特定的記錄    512
25.3.2  順序讀取記錄    513
25.4  修改數(shù)據(jù)庫    513
25.4.1  增加記錄    513
25.4.2  刪除記錄    514
25.5  實例    514
第26章  解析命令行選項    521
26.1  選項表    522
26.1.1 定義選項    522
26.1.2  嵌套選項表    525
26.2  使用選項表    526
26.2.1  創(chuàng)建上下文    526
26.2.2  解析命令行    527
26.2.3  剩余的參數(shù)    528
26.2.4  自動幫助信息    528
26.3  使用回調(diào)(callback)    531
26.4  錯誤處理    534
26.5  選項別名    536
26.5.1  指定別名    536
26.5.2  使別名生效    537
26.6  解析參數(shù)字符串    538
26.7  處理額外參數(shù)    538
26.8  應(yīng)用程序示例    538
第27章  運行時動態(tài)加載    540
動態(tài)加載接口    541
示例    544
第28章  用戶識別和驗證    546
28.1  ID到名字的轉(zhuǎn)換    546
示例:id命令    549
28.2  可掛接的認(rèn)證模塊    552
28.2.1  PAM 會話    553
28.2.2  PAM操作    555
附      錄
附錄A  頭文件    564
附錄B  ladsh源文件    565
詞匯表    584
參考文獻(xiàn)    593
索引    597

本目錄推薦

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