出版時間:2012-12 出版社:機械工業(yè)出版社 作者:趙克佳 等編著 頁數(shù):483
Tag標簽:無
內(nèi)容概要
《unix/linux程序設(shè)計教程》遵循最新的“統(tǒng)一unix規(guī)范版本4”,以linux為平臺,系統(tǒng)地講述了unix
api各種函數(shù)的編程方法。本書內(nèi)容包括unix的發(fā)展歷程與標準、標準i/o和低級i/o、文件與目錄操作、進程環(huán)境與進程控制、信號處理、時間與定時、終端i/o、高級i/o、進程之間的通信、套接字與網(wǎng)絡(luò)通信、多線程編程。
《unix/linux程序設(shè)計教程》在介紹unix
api各種函數(shù)的功能和用途的同時,清晰地闡述了它們所隱含的操作系統(tǒng)基本原理。書中給出了大量程序設(shè)計示例程序,有助于讀者更好地掌握這些函數(shù)的功能、使用方法及編程技巧。
《unix/linux程序設(shè)計教程》特別適合于高等院校計算機專業(yè)的教師、高年級本科生、研究生作為教材和參考書,也特別適合從事計算機系統(tǒng)軟件和應(yīng)用軟件開發(fā)的工程技術(shù)人員作為實用編程手冊查閱。
書籍目錄
前言
第1章 unix導(dǎo)論
1.1 unix簡史
1.1.1 unix的誕生
1.1.2 unix的早期發(fā)展
1.1.3 bsd unix
1.1.4 系統(tǒng)v unix
1.1.5 unix的商業(yè)化
1.1.6 linux
1.2 標準
1.2.1 svid
1.2.2 posix
1.2.3 統(tǒng)一unix規(guī)范
1.2.4 c標準
1.3 unix基本概念
1.3.1 程序和進程
1.3.2 內(nèi)核
1.3.3 shell
1.3.4 用戶名與用戶id、用戶組與組id
1.3.5 特權(quán)用戶
1.3.6 系統(tǒng)調(diào)用與庫函數(shù)
1.4 系統(tǒng)庫
1.4.1 頭文件
1.4.2 保留字
1.4.3 特征測試宏
1.5 示例程序和編譯環(huán)境
1.6 錯誤處理
1.7 系統(tǒng)信息
1.7.1 機器標識
1.7.2 硬件/軟件類型識別
1.8 系統(tǒng)能力限制
1.8.1 一般能力限制值
1.8.2 系統(tǒng)和文件特征選項
1.8.3 sysconf()、pathconf()和fpathconf()函數(shù)
1.9 思考與練習(xí)
第2章 標準輸入輸出
2.1 unix 輸入輸出基本概念
2.2 流和file對象
2.3 打開和關(guān)閉流
2.4 讀和寫流
2.4.1 字符i/o
2.4.2 行i/o
2.4.3 讀回退
2.4.4 塊i/o
2.5 文件定位
2.6 文件結(jié)束和錯誤指示器
2.7 流緩沖
2.8 格式i/o
2.8.1 格式輸出
2.8.2 格式輸入
2.9 臨時文件
2.10 思考與練習(xí)
第3章 低級輸入輸出
3.1 文件描述字的打開、創(chuàng)建和關(guān)閉
3.2 read()和write()函數(shù)
3.3 設(shè)置描述字的文件位置
3.4 dup()和dup2()函數(shù)
3.5 fdopen()和fileno()函數(shù)
3.6 文件控制函數(shù)fcntl()
3.6.1 重復(fù)文件描述字
3.6.2 文件描述字標簽
3.6.3 文件狀態(tài)標簽
3.7 非阻塞i/o
3.8 readv()和writev()函數(shù)
3.9 fsync()和fdatasync()函數(shù)
3.10 思考與練習(xí)
第4章 文件與目錄
4.1 文件
4.1.1 stat()、fstat()和lstat()函數(shù)
4.2 文件類型
4.2.1 普通文件
4.2.2 目錄
4.2.3 鏈接與link()函數(shù)
4.2.4 符號鏈接與symlink()和readlink()函數(shù)
4.2.5 特別文件
4.2.6 測試文件的類型
4.3 文件的屬主和用戶組
4.3.1 chown()、fchown()和lchown()函數(shù)
4.4 文件方式
4.4.1 文件訪問權(quán)限
4.4.2 調(diào)整用戶id和調(diào)整組id
4.4.3 sticky位
4.4.4 文件方式位小結(jié)
4.5 確定和改變文件方式
4.5.1 umask()函數(shù)
4.5.2 chmod()和fchmod()函數(shù)
4.5.3 access()函數(shù)
4.6 文件大小
4.6.1 截斷文件
4.7 文件時間
4.7.1 utime()和utimes()函數(shù)
4.8 文件的刪除與換名
4.8.1 刪除文件和目錄
4.8.2 文件換名
4.9 目錄操作
4.9.1 工作目錄
4.9.2 創(chuàng)建目錄
4.9.3 讀目錄流
4.9.4 對目錄流的隨機訪問
4.10 思考與練習(xí)
第5章 進程環(huán)境
5.1 main()函數(shù)
5.2 命令行參數(shù)
5.2.1 命令行參數(shù)的語法約定
5.2.2 掃描命令行中的選項
5.3 環(huán)境變量
5.3.1 環(huán)境表
5.3.2 訪問環(huán)境
5.4 終止進程
5.4.1 出口狀態(tài)
5.4.2 終止前的清理
5.4.3 流產(chǎn)程序
5.5 進程的存儲空間
5.5.1 進程的地址空間
5.5.2 動態(tài)存儲分配與釋放
5.5.3 釋放分配的存儲單元
5.6 setjmp()和longjmp()函數(shù)
5.7 進程資源
5.7.1 查看與設(shè)置資源限制
5.7.2 資源使用統(tǒng)計
5.8 用戶信息
5.8.1 用戶名
5.8.2 用戶數(shù)據(jù)庫
5.8.3 組數(shù)據(jù)庫
5.9 進程的身份憑證
5.10 調(diào)整進程的身份
5.11 思考與練習(xí)
第6章 進程控制
6.1 進程標識
6.2 進程創(chuàng)建
6.3 執(zhí)行一個新程序
6.4 等待進程完成
6.5 進程終止與僵死進程
6.6 system()函數(shù)
6.7 進程組
6.8 會晤期
6.9 控制終端
6.10 作業(yè)控制
6.11 思考與練習(xí)
第7章 信號處理
7.1 信號概念
7.2 unix 信號
7.2.1 程序錯誤類信號
7.2.2 程序中止類信號
7.2.3 鬧鐘類信號
7.2.4 i/o類信號
7.2.5 作業(yè)控制類信號
7.2.6 操作錯誤類信號
7.2.7 其他信號
7.3 生成信號
7.3.1 raise()函數(shù)
7.3.2 kill()函數(shù)
7.4 設(shè)置信號的動作
7.4.1 signal()函數(shù)
7.4.2 進程初啟時的信號動作
7.4.3 不可靠信號
7.4.4 sigaction()函數(shù)
7.5 信號句柄
7.5.1 正常返回的信號句柄
7.5.2 終止進程的句柄
7.6 阻塞信號
7.6.1 sigset_t類型和信號集操作
7.6.2 設(shè)置信號屏蔽
7.6.3 檢查懸掛信號
7.7 等待信號
7.7.1 pause()函數(shù)
7.7.2 sigsuspend()函數(shù)
7.8 使用分開的信號棧
7.9 信號句柄編程技巧
7.9.1 句柄內(nèi)非局部控制轉(zhuǎn)移
7.9.2 可重入函數(shù)與異步信號安全函數(shù)
7.9.3 被信號中斷的系統(tǒng)調(diào)用
7.9.4 原子數(shù)據(jù)
7.10 實時信號
7.10.1 sa_siginfo標志
7.10.2 發(fā)送實時信號
7.10.3 等待實時信號
7.11 思考與練習(xí)
第8章 時間與定時
8.1 系統(tǒng)時鐘
8.1.1 time()函數(shù)
8.1.2 gettimeofday()函數(shù)
8.2 時間格式轉(zhuǎn)換
8.2.1 分解的日歷時間
8.2.2 格式化日期與時間
8.3 cpu時間與墻鐘時間
8.3.1 clock()函數(shù)
8.3.2 times()函數(shù)
8.4 睡眠與定時
8.4.1 sleep()函數(shù)
8.4.2 設(shè)置定時器
8.5 實時時鐘與定時
8.5.1 實時時鐘
8.5.2 實時睡眠
8.5.3 實時定時器
8.5.4 創(chuàng)建和刪除實時定時器
8.5.5 設(shè)置實時定時器
8.5.6 定時器超期計數(shù)
8.6 思考與練習(xí)
第9章 終端i/o
9.1 需要改變終端設(shè)置的例子
9.2 終端i/o概述
9.2.1 終端
9.2.2 串行端口
9.2.3 終端設(shè)備文件
9.2.4 輸入輸出隊列
9.2.5 加工和非加工輸入方式
9.3 gti控制接口
9.3.1 termios數(shù)據(jù)結(jié)構(gòu)
9.3.2 gti控制函數(shù)
9.4 終端屬性
9.4.1 輸入方式
9.4.2 輸出方式
9.4.3 控制方式
9.4.4 局部方式
9.4.5 特殊字符
9.4.6 stty命令
9.5 終端標識
9.6 改變終端屬性
9.7 加工方式與非加工方式輸入
9.7.1 加工方式輸入
9.7.2 非加工方式輸入
9.8 設(shè)置波特率
9.9 行控制函數(shù)
9.10 串行端口程序設(shè)計
9.11 思考與練習(xí)
第10章 高級i/o
10.1 文件鎖
10.1.1 fcntl()文件鎖操作
10.1.2 鎖的測試、請求和釋放
10.1.3 文件鎖與進程和文件的關(guān)系
10.1.4 死鎖
10.1.5 建議鎖與強制鎖
10.2 信號驅(qū)動的i/o
10.3 多路轉(zhuǎn)接i/o
10.3.1 select()函數(shù)
10.3.2 poll()函數(shù)
10.4 異步i/o
10.4.1 異步i/o控制塊
10.4.2 i/o完成時的信號交付
10.4.3 異步i/o的優(yōu)先級
10.4.4 異步i/o函數(shù)
10.4.5 異步i/o之例
10.4.6 異步i/o注意事項
10.5 存儲映射i/o
10.6 思考與練習(xí)
第11章 進程間通信
11.1 管道
11.1.1 創(chuàng)建管道
11.1.2 父子進程間的管道通信
11.1.3 連接標準輸入和標準輸出的管道
11.1.4 popen()和pclose()函數(shù)
11.1.5 管道i/o的原子性
11.2 fifo特別文件
11.2.1 創(chuàng)建fifo
11.2.2 fifo操作
11.2.3 fifo用于客戶/服務(wù)通信
11.3 系統(tǒng)v ipc
11.3.1 關(guān)鍵字和標識
11.3.2 ipc資源描述結(jié)構(gòu)與成員ipc_perm
11.3.3 ipcs和ipcrm命令
11.4 消息隊列
11.4.1 創(chuàng)建和獲得消息隊列
11.4.2 消息隊列的查詢、設(shè)置和刪除
11.4.3 發(fā)送和接收消息
11.5 共享存儲段
11.5.1 創(chuàng)建和獲得共享存儲段
11.5.2 共享存儲段的查詢、設(shè)置和刪除
11.5.3 共享存儲段的連接和分離
11.6 信號量
11.6.1 創(chuàng)建和獲得信號量標識
11.6.2 信號量的查詢、設(shè)置和刪除
11.6.3 信號量操作
11.7 思考與練習(xí)
第12章 套接字與網(wǎng)絡(luò)通信
12.1 tcp/ip協(xié)議
12.2 套接字
12.3 套接字地址結(jié)構(gòu)
12.3.1 ip地址
12.3.2 域名地址
12.3.3 服務(wù)與端口號
12.3.4 套接字地址數(shù)據(jù)結(jié)構(gòu)
12.3.5 字節(jié)順序
12.4 命名套接字
12.5 套接字通信模式
12.6 流套接字操作
12.6.1 請求連接
12.6.2 接收連接
12.6.3 getsockname()和getpeername()函數(shù)
12.6.4 多客戶服務(wù)
12.6.5 send()和recv()函數(shù)
12.7 套接字選項
12.8 帶外數(shù)據(jù)
12.8.1 tcp帶外數(shù)據(jù)
12.8.2 帶外數(shù)據(jù)的發(fā)送和接收
12.8.3 帶外數(shù)據(jù)標志
12.9 數(shù)據(jù)報套接字操作
12.9.1 sendto()和recvfrom()函數(shù)
12.9.2 數(shù)據(jù)報套接字客戶/服務(wù)之例
12.9.3 使用connect()函數(shù)
12.10 超時處理
12.11 思考與練習(xí)
第13章 線程
13.1 線程概念
13.1.1 什么是線程
13.1.2 線程的好處
13.1.3 pthreads線程
13.1.4 線程標識
13.2 創(chuàng)建線程
13.3 終止線程
13.3.1 等待線程終止
13.3.2 可匯合與分離的線程
13.4 創(chuàng)建特殊屬性的線程
13.5 互斥變量
13.5.1 互斥變量的初始化和銷毀
13.5.2 互斥變量屬性
13.5.3 互斥變量的加鎖與解鎖
13.5.4 互斥變量與spin鎖
13.6 讀寫鎖
13.6.1 讀寫鎖的初始化和銷毀
13.6.2 讀寫鎖的上鎖與解鎖
13.7 條件變量
13.7.1 創(chuàng)建和銷毀條件變量
13.7.2 條件變量屬性
13.7.3 等待條件變量
13.7.4 喚醒條件變量等待
13.8 思考與練習(xí)
第14章 線程高級特征
14.1 線程專有數(shù)據(jù)
14.1.1 線程專有數(shù)據(jù)鍵的創(chuàng)建和刪除
14.1.2 使用線程專有數(shù)據(jù)
14.2 取消線程
14.2.1 線程的可取消屬性
14.2.2 取消線程與取消點
14.2.3 異步取消的安全性
14.2.4 現(xiàn)場清理
14.3 線程調(diào)度
14.3.1 線程調(diào)度競爭范圍
14.3.2 調(diào)度策略與優(yōu)先級
14.3.3 線程調(diào)度屬性
14.3.4 動態(tài)改變線程的調(diào)度策略和優(yōu)先級
14.4 線程與信號
14.4.1 信號動作
14.4.2 信號屏蔽
14.4.3 向線程發(fā)送信號
14.4.4 等待信號
14.4.5 一種新的事件通知方法:sigev_thread
14.5 思考與練習(xí)
參考文獻
章節(jié)摘錄
1.1.3 Bs口UN!x 在UNIX V7期間,UNIX已發(fā)展成為一個可運行于許多不同處理機上的相當(dāng)穩(wěn)定的操作系統(tǒng)。貝爾實驗室廣泛使用UNIX,但沒有任何技術(shù)服務(wù)。由于美國法律的原因,其父公司AT&T也沒有提供服務(wù)(受1956年美國司法部對AT&T以及Western Electric公司反托拉斯訴訟協(xié)議的約束,在該協(xié)議的有效期內(nèi),禁止AT&T生產(chǎn)任何與電話或電報無關(guān)的設(shè)備或從事其他非公共載體通信服務(wù)的商務(wù))。 加州大學(xué)伯克利分校于1974年12月得到了第一個UNIX許可。在隨后的幾年中,貝爾實驗室研究組的一些成員,包括Ken 7hompson,利用休假在那里講授UNIX,并參加一些研究工作。加州大學(xué)伯克利分校的很多研究生和教授對UNIX系統(tǒng)產(chǎn)生了極大興趣,其中包括Bill J0y和Chuck H0ley。他們?yōu)檫@個UNIX開發(fā)了一些實用程序,包括Pascal編譯器和ed編輯器,這個編輯器后來成為著名的vi編輯器。BillToy將這些新增的內(nèi)容與一些廣泛發(fā)布的軟件集中在一起,打成一個軟件包,形成了“Berkeley Software Distribution”(BSD),并在1 978年春季將它以每個許可協(xié)議50美元售出。同年晚些時候又推出了2BSD。 據(jù)說前兩個BSD版本只包含應(yīng)用和實用程序,并沒有修改也沒有包含UNIX操作系統(tǒng),第一個包含操作系統(tǒng)的版本是1979年發(fā)布的3BSD。3BSD運行于32位的VAX一11/780,這個版本在內(nèi)核加入了頁式請求和虛擬內(nèi)存等新功能。3BSD虛擬內(nèi)存功能引起了國防高級研究項目部(the Defense Advanced Research Project Agency,DARPA)的注意,他們決定為伯克利UNIX系統(tǒng)的開發(fā)提供基金。DARPA項目的主要目的之一是集成/CP/IP網(wǎng)絡(luò)協(xié)議包。在DARPA的資助下,UNIX開始蓬勃發(fā)展。1980年產(chǎn)生了后來統(tǒng)稱為4BSD的幾個版本:4。0BSD(1980)、4.1BSD(1981)、4.2BSD(1983)、4.3BSD(1986)以及4。4BSD(1993)。 伯克利UNIX的研究工作是由計算機科學(xué)研究組(Computer Science Research Group,CSRG)進行的。4.4BSD之后,由于UNIX系統(tǒng)變得越來越大,以致很難由一個小組來維護和發(fā)展,同時也由于經(jīng)費問題,CSRG決定不再繼續(xù)進行UNIX的開發(fā)。 伯克利小組對UNIX作出了許多重要性的貢獻。除了虛擬內(nèi)存和納入了TCP/IP協(xié)議外,BSD UNIX還引入了快速文件系統(tǒng)(Fast File System,F(xiàn)FS)、可靠信號以及套接字功能。 1.1.4 系統(tǒng)V UNOX …… P3
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載