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

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

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

定 價(jià):¥59.00

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

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

內(nèi)容簡介

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

作者簡介

  MichaelK.Johson是Specifix的操作系統(tǒng)工程師。他曾是RedHat的操作系統(tǒng)開發(fā)人員,在那里他管理一個(gè)內(nèi)核開發(fā)小組長達(dá)3年半,是Fedora項(xiàng)目基礎(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手冊(cè)頁    14
3.2  info手冊(cè)頁    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的選項(xiàng)和擴(kuò)展    33
5.1  gcc選項(xiàng)    33
5.2  頭文件    36
5.2.1  long long    36
5.2.2  內(nèi)嵌函數(shù)    36
5.2.3  可選擇的擴(kuò)展關(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)運(yùn)行時(shí)的權(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)存錯(cuò)誤    55
7.5  電網(wǎng)    60
7.5.1  使用電網(wǎng)    61
7.5.2  內(nèi)存對(duì)齊    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è)計(jì)共享庫    67
8.3.1  管理兼容性    67
8.3.2  不兼容的庫    68
8.3.3  設(shè)計(jì)兼容的庫    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  通用錯(cuò)誤返回碼    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)識(shí)符    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  運(yùn)行新程序    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)儲(chǔ)內(nèi)核文件信息    109
10.5  簡單子進(jìn)程    109
10.5.1  用system()運(yùn)行和等待    109
10.5.2  從進(jìn)程讀或?qū)?nbsp;   110
10.6  會(huì)話和進(jìn)程組    112
10.6.1  會(huì)話    113
10.6.2  控制終端    113
10.6.3  進(jìn)程組    113
10.6.4  孤兒進(jìn)程組    114
10.7  介紹ladsh    115
用ladsh運(yùn)行外部程序    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  指針的移動(dòng)    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  一個(gè)使用stat()的簡單示例    150
11.3.3  輕松確定訪問權(quán)限    152
11.3.4  改變文件的訪問權(quán)限    153
11.3.5  改變文件的所有者和組    153
11.3.6  改變文件的時(shí)間戳    154
11.3.7  Ext3擴(kuò)展屬性    155
11.4  操作目錄項(xiàng)    159
11.4.1  創(chuàng)建設(shè)備文件以及命名管道的目錄項(xiàng)    160
11.4.2  創(chuàng)建硬鏈接    162
11.4.3  使用符號(hào)鏈接    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  對(duì)ladsh添加重定向    168
11.7.1  數(shù)據(jù)結(jié)構(gòu)    168
11.7.2  修改代碼    169
第12章  信號(hào)處理    172
12.1  信號(hào)的概念    173
12.1.1  信號(hào)的生命周期    173
12.1.2  簡單信號(hào)    173
12.1.3  可靠信號(hào)    175
12.1.4  信號(hào)和系統(tǒng)調(diào)用    176
12.2  Linux(和POSIX)信號(hào)系統(tǒng)的API    177
12.2.1  發(fā)送信號(hào)    177
12.2.2  使用sigset_t    178
12.2.3  捕捉信號(hào)    178
12.2.4  操作一個(gè)進(jìn)程的信號(hào)掩碼    180
12.2.5  找到等待信號(hào)的集合    182
12.2.6  等待信號(hào)    182
12.3  有效信號(hào)    183
描述信號(hào)    187
12.4  編寫信號(hào)處理程序    188
12.5  重新打開日志文件    190
12.6  實(shí)時(shí)信號(hào)    193
信號(hào)隊(duì)列和排序    193
12.7  獲取信號(hào)的信息    196
12.7.1  得到一個(gè)信號(hào)的上下文    196
12.7.2  使用信號(hào)發(fā)送數(shù)據(jù)    202
第13章  高級(jí)文件操作    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  頁對(duì)齊    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  強(qiáng)制鎖    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  實(shí)現(xiàn)find功能    274
14.8  目錄變更提示    276
第15章  作業(yè)控制    284
15.1  作業(yè)控制基礎(chǔ)    284
15.1.1  重新啟動(dòng)進(jìn)程    284
15.1.2  停止進(jìn)程    285
15.1.3  處理作業(yè)控制信號(hào)    285
15.2  ladsh中的作業(yè)控制    287
第16章  終端與偽終端    293
16.1  tty操作    294
16.1.1  終端實(shí)用函數(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實(shí)例    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  實(shí)際的網(wǎng)絡(luò)    359
17.1.3  讓實(shí)際的網(wǎng)絡(luò)變得理想    360
17.1.4  地址    360
17.2  實(shí)用函數(shù)    361
17.3  基本套接字操作    362
17.3.1  建立一個(gè)套接字    362
17.3.2  建立連接    364
17.3.3  將地址綁定到套接字    364
17.3.4  等待連接    364
17.3.5  連接到一個(gè)服務(wù)器    365
17.3.6  找到連接地址    366
17.4  Unix域套接字    367
17.4.1  Unix域地址    367
17.4.2  等待一個(gè)連接    368
17.4.3  連接到一個(gè)服務(wù)器    370
17.4.4  運(yùn)行Unix域的示例    371
17.4.5  未命名的Unix域套接字    371
17.4.6  傳遞文件描述符    372
17.5  基于TCP/IP協(xié)議的聯(lián)網(wǎng)機(jī)器    377
17.5.1  字節(jié)存儲(chǔ)順序    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ù)報(bào)    404
17.6.1  創(chuàng)建一個(gè)UDP套接字    405
17.6.2  發(fā)送和接收數(shù)據(jù)報(bào)    406
17.6.3  一個(gè)簡單的tftp服務(wù)器    407
17.7  套接字錯(cuò)誤    413
17.8  舊的網(wǎng)絡(luò)函數(shù)    415
17.8.1  IPv4地址操作    415
17.8.2  主機(jī)名解析    417
17.8.3  舊的主機(jī)信息查找范例    418
17.8.4  查找端口號(hào)    420
第18章  時(shí)間    423
18.1  獲取時(shí)間和日期    423
18.1.1  時(shí)間和日期的表示    423
18.1.2  時(shí)間的轉(zhuǎn)換,格式化和解析    426
18.1.3  時(shí)間的限制    429
18.2  使用計(jì)時(shí)器    431
18.2.1  休眠    431
18.2.2  間隔計(jì)時(shí)器    432
第19章  隨機(jī)數(shù)    436
19.1  偽隨機(jī)數(shù)    436
19.2  密碼系統(tǒng)和隨機(jī)數(shù)    437
第20章  虛擬控制臺(tái)編程    439
20.1  起步    440
20.2  發(fā)出峰鳴聲    442
20.3  判斷終端是否為虛擬控制臺(tái)    443
20.4  查找當(dāng)前虛擬控制臺(tái)    443
20.5  管理虛擬控制臺(tái)的切換    444
20.6  范例:open命令    447
第21章  Linux控制臺(tái)    449
21.1  權(quán)能數(shù)據(jù)庫    450
21.2  圖標(biāo),字符和映射    451
21.3  Linux控制臺(tái)權(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  安全何時(shí)重要    464
安全何時(shí)失效    465
22.2  最小化攻擊時(shí)機(jī)    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  運(yùn)行Shell    475
22.3.5  創(chuàng)建臨時(shí)文件    476
22.3.6  競爭狀態(tài)和信號(hào)處理    478
22.3.7  關(guān)閉文件描述符    478
22.4  作為守護(hù)進(jìn)程運(yù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  一個(gè)簡單的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  移動(dòng)光標(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  實(shí)例    514
第26章  解析命令行選項(xiàng)    521
26.1  選項(xiàng)表    522
26.1.1 定義選項(xiàng)    522
26.1.2  嵌套選項(xiàng)表    525
26.2  使用選項(xiàng)表    526
26.2.1  創(chuàng)建上下文    526
26.2.2  解析命令行    527
26.2.3  剩余的參數(shù)    528
26.2.4  自動(dòng)幫助信息    528
26.3  使用回調(diào)(callback)    531
26.4  錯(cuò)誤處理    534
26.5  選項(xiàng)別名    536
26.5.1  指定別名    536
26.5.2  使別名生效    537
26.6  解析參數(shù)字符串    538
26.7  處理額外參數(shù)    538
26.8  應(yīng)用程序示例    538
第27章  運(yùn)行時(shí)動(dòng)態(tài)加載    540
動(dòng)態(tài)加載接口    541
示例    544
第28章  用戶識(shí)別和驗(yàn)證    546
28.1  ID到名字的轉(zhuǎn)換    546
示例:id命令    549
28.2  可掛接的認(rèn)證模塊    552
28.2.1  PAM 會(huì)話    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號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)