課程簡介

簡介

  • 目標
  • 你是誰
  • Linux基金會
  • Linux基金會培訓
  • 認證項目與數字徽章
  • Linux發行版
  • 平臺
  • 準備你的系統
  • 使用和下載虛擬機
  • Linux中的變化

預備知識

  • 流程
  • 標準與LSB

如何參與開源項目 **

  • 如何正確貢獻的概述
  • 爲安全與質量保持與主線的緊密聯繫
  • 研究並理解項目的DNA
  • 找出你想解決的問題
  • 識別維護者及其工作流程與方法
  • 儘早獲取反饋並公開工作
  • 增量貢獻,而不是大量代碼提交
  • 放下自我:不要過於敏感
  • 保持耐心,建立長期關係,樂於助人

編譯器

  • GCC
  • 其他編譯器
  • 主要gcc選項
  • 預處理器
  • 集成開發環境(IDE)
  • 實驗

  • 靜態庫
  • 共享庫
  • 鏈接庫
  • 動態鏈接加載器
  • 實驗

Make

  • 使用make和Makefiles
  • 構建大型項目
  • 更復雜的規則
  • 內置規則
  • 實驗

源代碼控制

  • 源代碼控制
  • RCS和CVS
  • Subversion
  • git
  • 實驗

調試與核心轉儲

  • gdb
  • 什麼是核心轉儲文件?
  • 生成核心轉儲
  • 檢查覈心轉儲
  • 實驗

調試工具

  • 獲取時間
  • 性能分析
  • valgrind
  • 實驗

系統調用

  • 系統調用與庫函數
  • 如何進行系統調用
  • 返回值與錯誤碼
  • 實驗

內存管理與分配

  • 內存管理
  • 動態分配
  • 調整malloc()
  • 鎖定頁面
  • 實驗

Linux中的文件與文件系統 **

  • 文件、目錄與設備
  • 虛擬文件系統
  • ext2/ext3文件系統
  • 日誌文件系統
  • ext4文件系統
  • 實驗

文件I/O

  • UNIX文件I/O
  • 打開與關閉
  • 讀取、寫入與定位
  • 位置與向量I/O
  • 標準I/O庫
  • 大文件支持(LFS)
  • 實驗

高級文件操作

  • Stat函數
  • 目錄函數
  • inotify
  • 內存映射
  • flock()與fcntl()
  • 創建臨時文件
  • 其他系統調用
  • 實驗

進程 I

  • 什麼是進程?
  • 進程限制
  • 進程組
  • proc文件系統
  • 進程間通信方法
  • 實驗

進程 II

  • 使用system()創建進程
  • 使用fork()創建進程
  • 使用exec()創建進程
  • 使用clone()
  • 退出
  • 構造函數與析構函數
  • 等待
  • 守護進程
  • 實驗

管道與FIFO

  • 管道與進程間通信
  • popen()與pclose()
  • pipe()
  • 命名管道(FIFO)
  • splice(), vmsplice()與tee()
  • 實驗

異步I/O**

  • 什麼是異步I/O?
  • POSIX異步I/O API
  • Linux實現
  • 實驗

信號 I

  • 什麼是信號?
  • 可用信號
  • 信號分發
  • 鬧鐘、暫停與睡眠
  • 設置信號處理程序
  • 信號集
  • sigaction()
  • 實驗

信號 II

  • 可重入性與信號處理程序
  • 跳轉與非本地返回
  • siginfo與sigqueue()
  • 即時信號
  • 實驗

POSIX線程 I

  • Linux下的多線程
  • 基本程序結構
  • 創建與銷燬線程
  • 信號與線程
  • fork與線程
  • 實驗

POSIX線程 II

  • 死鎖與競爭條件
  • 互斥操作
  • 信號量
  • Futexes
  • 條件操作
  • 實驗

網絡與套接字

  • 網絡層
  • 什麼是套接字?
  • 流套接字
  • 數據報套接字
  • 原始套接字
  • 字節序
  • 實驗

套接字地址與主機

  • 套接字地址結構
  • 轉換IP地址
  • 主機信息
  • 實驗

套接字端口與協議

  • 服務端口信息
  • 協議信息
  • 實驗

套接字客戶端

  • 基本客戶端流程
  • socket()
  • connect()
  • close()與shutdown()
  • UNIX客戶端
  • 互聯網客戶端
  • 實驗

套接字服務器

  • 基本服務器流程
  • bind()
  • listen()
  • accept()
  • UNIX服務器
  • 互聯網服務器
  • 實驗

套接字輸入/輸出操作

  • write(), read()
  • send(), recv()
  • sendto(), recvfrom()
  • sendmsg(), recvmsg()
  • sendfile()
  • socketpair()
  • 實驗

套接字選項

  • 獲取與設置套接字選項
  • fcntl()
  • ioctl()
  • getsockopt()與setsockopt()
  • 實驗

Netlink套接字**

  • 什麼是netlink套接字?
  • 打開netlink套接字
  • netlink消息
  • 實驗

套接字多路複用與併發服務器

  • 多路複用與異步套接字I/O
  • select()
  • poll()
  • pselect()與ppoll()
  • epoll
  • 信號驅動與異步I/O
  • 併發服務器
  • 實驗

進程間通信

  • IPC方法
  • POSIX IPC
  • System V IPC**
  • 實驗

共享內存

  • 什麼是共享內存?
  • POSIX共享內存
  • System V共享內存**
  • 實驗

信號量

  • 什麼是信號量?
  • POSIX信號量
  • System V信號量**
  • 實驗

消息隊列

  • 什麼是消息隊列?
  • POSIX消息隊列
  • System V消息隊列**
  • 實驗

最低要求

本課程適用於有經驗的開發人員。學生應精通 C 程式設計,並熟悉基本的 Linux 實用程式和文本編輯器。

觀眾

本課程適用於有經驗的開發人員。學生應精通 C 程式設計,並熟悉基本的 Linux 實用程式和文本編輯器。

經驗水準: 中級

 28 時間:

人數


每位參與者的報價

Upcoming Courses

課程分類