日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Unix環境高級編程雖然是一本很經典的案頭必備的書籍,但它更像是一本字典,對于初學者來說看起來很艱難,《Unix/Linux編程實踐教程》中有趣的實例與循序漸進的講解,我認為更適合初學者的學習

【課程目錄】

第1章:unix系統編程概述

介紹

什么是系統編程

簡單的程序模型

系統模型

操作系統的職責

為程序提供服務

理解系統編程

系統資源

目標:理解系統編程

方法:通過三個問題來理解

從用戶的角度來理解unix

unix能做些什么

登錄–運行程序–注銷

目錄操作

文件操作

從系統的角度來看unix

用戶和程序之間的連接方式

網絡橋牌

bc:unix的計算器

從bc/dc到web

動手實踐

工作步驟與概要圖

接下來的工作步驟

unix的概要圖

unix的發展歷程

第2章:用戶、文件操作與聯機幫助:編寫who命令

介紹

關于命令who

問題1:who命令能做些什么

問題2:who命令是如何工作的

問題3:如何編寫who

問題:如何從文件中讀取數據結構

答案:使用open、read和close

編寫wh01.c

顯示登錄信息

編寫wh02.c

回顧與展望

編寫cp(讀和寫)

問題1:cp命令能做些什么

問題2:cp命令是如何創建/重寫文件的

問題3:如何編寫cp

unix編程看起來好像很簡單

提高文件i/o效率的方法:使用緩沖

緩沖區的大小對性能的影響

為什么系統調用需要很多時間

低效率的wh02.c

在wh02.c中運用緩沖技術

內核緩沖技術

文件讀寫

注銷過程:做了些什么

注銷過程:如何工作的

改變文件的當前位置

編寫終端注銷的代碼

處理系統調用中的錯誤

第3章:目錄與文件屬性:編寫ls

介紹

問題1:1s命令能做什么

1s可以列出文件名和文件的屬性

列出指定目錄或文件的信息

經常用到的命令行選項

問題1的答案

文件樹

問題2:1s是如何工作的

什么是目錄

是否可以用open、read和close來操作目錄

如何讀目錄的內容

問題3:如何編寫ls

編寫ls-1

問題1:ls-1能做些什么

問題2:ls-1是如何工作的

用stat得到文件信息

stat提供的其他信息

如何實現

將模式字段轉換成字符

將用戶/組id轉換成字符串

編寫ls2.c

三個特殊的位

set-user-id位

set-group-id位

sticky位

用ls-1看到的特殊屬性

ls小結

設置和修改文件的屬性

文件類型

許可位與特殊屬性位

文件的鏈接數

文件所有者與組

文件大小

時間

文件名

第4章:文件系統:編寫pwd

介紹

從用戶的角度看文件系統

目錄和文件

目錄命令

文件操作命令

針對目錄樹的命令

目錄樹的深度幾乎沒有限制

unix文件系統小結

unix文件系統的內部結構

第一層抽象:從磁盤到分區

第二層抽象:從磁盤到塊序列

第三層抽象:從塊序列到三個區域的劃分

文件系統的實現:創建一個文件的過程

文件系統的實現:目錄的工作過程

文件系統的實現:cat命令的工作原理

i-節點和大文件

unix文件系統的改進

理解目錄

理解目錄結構

與目錄樹相關的命令和系統調用

編寫pwd

pwd的工作過程

pwd的一種版本

多個文件系統的組合:由多棵樹構成的樹

裝載點

多重i-節點號和設備交叉鏈接

符號鏈接

第5章:連接控制:學習stty

為設備編程

設備就像文件

設備具有文件名

設備和系統調用

例子:終端就像文件

設備文件的屬性

編寫write程序

設備文件和i-節點

設備與文件的不同之處

磁盤連接的屬性

屬性1:緩沖

屬性2:自動添加模式

用open控制文件描述符

磁盤連接小結

終端連接的屬性

終端的i/o并不如此簡單

終端驅動程序

stty命令

編寫終端驅動程序:關于設置

編寫終端驅動程序:關tx數

編寫終端驅動程序:關于位

編寫終端驅動程序:幾個程序例子

終端連接小結

其他設備編程:ioctl

文件、設備和流

第6章:為用戶編程:終端控制和信號

軟件工具與針對特定設備編寫的程序

終端驅動程序的模式

規范模式:緩沖和編輯

非規范處理

終端模式小結

編寫一個用戶程序:play_again.c

信號

ctrl-c做什么

信號是什么

進程該如何處理信號

信號處理的例子

為處理信號做準備:play_again4.c

進程終止

為設備編程

第7章:事件驅動編程:編寫一個視頻游戲

視頻游戲和操作系統

任務:單人彈球游戲(pong)

屏幕編程:curses庫

介紹curses

curses內部:虛擬和實際屏幕

時間編程:sleep

時鐘編程1:alarms

添加時延:sleep

sleep()是如何工作的:使用unix中的alarms

調度將要發生的動作

時間編程2:間隔計時器

添加精度更高的時延:usleep

三種計時器:真實、進程和實用

兩種間隔:初始和重復

用間隔計時器編程

計算機有幾個時鐘

計時器小結

信號處理1:使用signal

早期的信號處理機制

處理多個信號

測試多個信號

信號機制其他的弱點

信號處理2:sigaction

處理多個信號:sigaction

信號小結

防止數據損毀(datacorruption)

數據損毀的例子

臨界(criticalsections)

阻塞信號:sigprocmask和sigsetops

重入代碼(reentrantcode):遞歸調用的危險

視頻游戲中的臨界區

kill:從另–個進程發送的信號

使用計時器和信號:視頻游戲

bounceld.c:在一條線上控制動畫

bounce2d.c:兩維動畫

完成游戲

輸入信號,異步i/o

使用異步i/o

方法1:使用oasync

方法2:使用aio..read

彈球程序中需要異步讀人嗎

異步輸入、視頻游戲和操作系統

第8章:進程和程序:編寫命令解釋器sh

進程=運行中的程序

通過命令ps學習進程

系統進程

進程管理和文件管理

內存和程序

shell:進程控制和程序控制的–個工具

shell是如何運行程序的

shell的主循環

問題1:一個程序如何運行另一個程序

問題2:女口何建立新的進程

問題3:父進程如何等待子進程的退出

小結:shell如何運行程序

實現一個shell:psh2.c

思考:用進程編程

exit和exec的其他細節

進程死亡:exit和_exit

exec家族??

第9章:可編程的shell、shell變量和環境:編寫自己的shell

shell編程

什么是以及為什么要使用shell腳本語言

smshl–命令行解析

shell中的流程控制

if語句做些什么

if是女口何工作的

在stash中增加if

smsh2.c:修改后的代碼

shell變量:局部和全局

使用shell變量

變量的存儲

增加變量命令:built-ins

效果如何

環境:個性化設置

使用環境

什么是環境以及它是如何工作的

在smsh中增加環境處理

varlib.c的代碼

已實現的shell的功能

第10章:i/o重定向和管道

shell編程

一個shell應用程序:監視系統用戶

標準i/o與重定向的若干概念

概念1:3個標準文件描述符

默認的連接:tty

程序都輸出到stdout

重定向i/o的是shell而不是程序

理解i/o重定向

概念2:“最低可用文件描述符(lowest-available-fd)”原則

兩個概念的結合

如何將stdin定向到文件

方法1:closethenopen

方法2:open..close..dup..close

系統調用dup小結

方法3:open..dup2..close

shell為其他程序重定向stdin

為其他程序重定向i/o:who]userlist

管道編程

創建管道

使用fork來共享管道

使用pipe、fork以及exec

技術細節:管道并非文件

第11章:連接到近端或遠端的進程:服務器與socket(套接宇)

產品和服務

一個簡單的比喻:飲料機接口

bc:unix中使用的計算器

編寫bc:pipe、fork、dup、exec

對協同進程的討論

fdopen:讓文件描述符像文件–樣使用

popen-讓進程看似文件

popen的功能

實現popen:使用fdopen命令

訪問數據:文件、應用程序接el(apl)和服務器

socket:與遠端進程相連

類比:“電話中傳來聲音:現在時間是…”

因特網時間、dap和天氣服務器

服務列表:眾所周知的端口

編寫timeserv? ?? ???.? ?? ???cc時間服務器

測試timeserv.c

編寫timecint.c:時間服務客戶端

測試timecint.c

另一種服務器:遠程的ls

軟件精靈

第12章:連接和協議:編寫web服務器

服務器設計重點

三個主要操作

操作1和操作2:建立連接

操作1:建立服務器端socket

操作2:建立到服務器的連接

socklib.c

操作3:客戶/服器的會話

使用socklib.c的timeserv/timecint

第2版的服務器:使用fork

服務器的設計問題:diy或代理

編寫web服務器

web服務器功能

設計web服務器

web服務器協議

編寫web服務器

運行web服務器

webserv的源程序

比較web服務器

第13章:基于數據報(datagram)的編程:編寫許可證服務器

軟件控制

許可證控制簡史

一個非計算機系統實例:轎車管理系統

轎車鑰匙管理描述

用客戶/服務器方式管理轎車

許可證管理

許可證服務系統:它做些什么

許可證服務系統:如何工作

一個通信系統的例子

數據報socket

流與數據報的比較

數據報編程

sendto和recvfrom的小結

數據報應答

數據報小結

許可證服務器版本1.0

客戶端版本1

服務器端版本1

測試版本1

進一步的工作

處理現實的問題

處理客戶端崩潰

處理服務器崩潰

測試版本2

分布式許可證服務器

unix域socket

文件名作為socket地址

使用unix域socket編程

小結;socket和服務器

第14章:線程機制:并發函數的使用

同一時刻完成多項任務

函數的執行路線

一個單線程程序

一個多線程程序

相關函數小結

線程間的分工合作

例1:incrprint.c

例2:twordcount.c

線程內部的分工合作:小結

線程與進程

線程間互通消息

通知選舉中心

使用條件變量編寫程序

使用條件變量的函數

回到web服務器的例子

多線程的web服務器

web服務器程序的改進

多線程版本允許一個新的功能

防止僵尸線程(zombiethreads):獨立線程

web服務器代碼

線程和動畫

使用線程的優點

多線程版本的bouneeld.c

基于多線程機制的多重動畫:tanimate.c

tanimate.c中的互斥量

屏幕控制線程??

第15章:進程間通信(1pc)

編程方式的選擇

talk命令:從多個數據源讀取數據

同時從兩個文件描述符讀取數據

select系統調用

select與talk

select與poll

通信的選擇

一個問題的三種解決方案

通過文件的進程間通信

命名管道

共享內存

各種進程間通信方法的比較

進程之間的分工合作

文件鎖

信號量(semaphores)

socket及fifo與共享的存儲

打印池

多個寫者、一個讀者

客戶/服務器模型

縱觀ipc

連接與游戲

分享到:
標簽:unix 教程 電子書 Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定