Linux環境高級編程
2011-08-20 14:09一、課程目標
本次課程涵蓋Linux系統編程的幾個主要方面,通過本次課程的學習,學員將具備以下能力:
- 了解Linux系統調用和類庫的區別;
- 熟悉文件I/O、文件和目錄、進程管理、進程間通信(IPC)、信號、時間與定時器的編程。
二、參訓要求
參加本次課程的學員須具備以下能力:
- 本次課程使用 C語言 教學,所以學員需擁有較好的C語言基礎;
- 能熟練使用常用的Linux命令;
- 能熟練使用gcc、gdb、熟練撰寫makefile;
- 最好熟練使用vi、emacs等文本編輯器其中的一種。
三、課程實踐環境
- 學員自備電腦
- 操作系統:GNU/Linux 2.6+(建議使用Redhat AS 5+或Ubuntu、Fedora)
- 編譯器:GCC v4.1+、GDB v7.0+
- 可選IDE:Eclipse CDT
四、課程大綱
本次課程由以下幾個部分構成:
1、 預備知識
- UNIX歷史和標準
?
- UNIX; BSD & System V
- GNU project; Linux Kernel
- POSIX, SUSv3, SUSv4
- Linux系統相關概念
?
- 系統調用和庫函數
- 錯誤處理
- 特性測試宏
- 系統數據類型
- 系統限制和選項 (sysconf(), pathconf())
- 系統參數: /proc文件系統
2、文件I/O
- Linux I/O系統調用與C標準庫stdio的比較
- I/O系統調用: open(), close(), read(), write()
- 控制I/O的Buffer
- 讀寫指針的定位:lseek()
- I/O控制:ioctl()
- 原子操作和數據競態
- 文件控制: fcntl()
- 文件打開的狀態標志(status flags)
- 文件描述符
- 復制文件描述符:dup(), dup2()
3、文件和目錄
- 文件屬性
?
- 獲取文件的屬性:stat()
- 文件的時間戳
- 文件的所有權:chown()
- 文件的操作權限:chmod()
- 目錄和連接文件
?
- 硬連接和軟連接 (符號連接)
- 目錄
- 迭代目錄樹
- 當前工作目錄(CWD)
- 路徑名
- 監控文件系統的事件:inotify
?
- inotify API
- inotify事件
- inotify限制
4、 進程控制
- 進程屬性
?
- 進程ID(PID)和父進程ID(PPID)
- 進程內存布局
- 棧 (Stack)
- 堆 (Heap)
- 命令行參數和環境變量列表
- 非局部goto (nonlocal goto): setjmp() 和 longjmp()
- 創建和終止進程
?
- 創建進程:fork()
- fork() 后的多進程數據競態
- 進程終止:exit(3) 和 _exit(2)
- 退出處理器:atexit()
- 等待子進程的退出:wait(), waitpid(), waitid()
- SIGCHLD 信號
- 執行程序
?
- execve()
- exec() 系列庫函數
- 解釋腳本
- 文件描述符和 exec()
- 信號和 exec()
- 執行Shell命令:system()
- 守護進程 (Daemons)
?
- 創建守護進程的幾個步驟
- 使用 SIGHUP 信號使一個進程變成守護進程
- 系統中守護進程的示例:syslog
- 進程權限相關
?
- 文件 /etc/passwd 和 /etc/group
- User ID, and Group ID
- Real, effective, and saved set IDs
- 其它 group IDs
- Set-user-ID and set-group-ID programs
- 獲取或修改進程權限
5、信號 (Signals)
- 信號類型和默認動作
- 信號處理方式
- 信號處理器
- 發送信號
- 信號集
- 阻塞信號(signal mask)
- 系統調用的中斷和重新執行
- 等待信號
6、時間和定時器(Timers) ?
- 時間相關的數據類型
- POSIX Clock
- 獲取當前時間
- 設置當前時間
- C標準庫 時間函數
- Sleep
- 定時器(Timers)
?
- 簡單的定時器:alarm()
- interval Timers
- 高級定時器
7、進程間通信 (Interprocess Communication, IPC)
- 傳統UNIX IPC
?
- 管道和優先隊列 (Pipe and FIFO)
- SYSV 消息隊列 (SYSV Message Queue)
- SYSV 信號量 (SYSV Semaphore)
- SYSV 共享內存 (SYSV Shared Memory Segments)
- 內存映射文件 (Memory Mapping Files)
- POSIX IPC
?
- POSIX IPC的優勢
- POSIX 消息隊列 (POSIX Message Queue)
- POSIX 信號量 (POSIX Semaphore)
- POSIX 共享內存 (POSIX Shared Memory Segments)
五、時間安排
課程時間:3天,以每天6小時計,具體安排如下:
- Day1
?
- 1 - 預備知識
- 2 - 文件I/O
- 3 - 文件與目錄
- Day2
?
- 4 - 進程控制
- 5 - 信號
- 6 - 定時器
- Day3
?
- 7 - 進程間通信
- 課程回顧與總結
六、課程資源
????? 可獲取的課程資源見: 教學資源 。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
