Linux环境高级编程
Saturday, 20 August 2011 14:09
There are no translations available.
一、课程目标
本次课程涵盖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
-
Day3
六、课程资源
可获取的课程资源见:教学资源。