Linux环境高级编程
2012-06-27 15:24
197 查看
Linux环境高级编程
2011-08-20 14:09
了解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
UNIX; BSD & System V
GNU project; Linux Kernel
POSIX, SUSv3, SUSv4
Linux系统相关概念
系统调用和库函数
错误处理
特性测试宏
系统数据类型
系统限制和选项 (sysconf(), pathconf())
系统参数: /proc文件系统
I/O系统调用: open(), close(), read(), write()
控制I/O的Buffer
读写指针的定位:lseek()
I/O控制:ioctl()
原子操作和数据竞态
文件控制: fcntl()
文件打开的状态标志(status flags)
文件描述符
复制文件描述符:dup(), dup2()
获取文件的属性:stat()
文件的时间戳
文件的所有权:chown()
文件的操作权限:chmod()
目录和连接文件
硬连接和软连接 (符号连接)
目录
迭代目录树
当前工作目录(CWD)
路径名
监控文件系统的事件:inotify
inotify API
inotify事件
inotify限制
进程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
获取或修改进程权限
信号类型和默认动作
信号处理方式
信号处理器
发送信号
信号集
阻塞信号(signal mask)
系统调用的中断和重新执行
等待信号
POSIX Clock
获取当前时间
设置当前时间
C标准库 时间函数
Sleep
定时器(Timers)
简单的定时器:alarm()
interval Timers
高级定时器
传统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)
Day1
1 - 预备知识
2 - 文件I/O
3 - 文件与目录
Day2
4 - 进程控制
5 - 信号
6 - 定时器
Day3
7 - 进程间通信
课程回顾与总结
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 - 进程间通信
课程回顾与总结
六、课程资源
可获取的课程资源见:教学资源。相关文章推荐
- Linux环境高级编程--介绍
- Linux环境高级编程--介绍
- Unix环境高级编程阅读之一——Unix\Linux基础知识
- UNIX环境高级编程——Linux系统调用列表
- 《UNIX 环境高级编程》源代码在linux环境运行方法
- LINUX开发学习日记(第一部)(UNIX环境高级编程)
- UNIX 环境高级编程(二)—— linux共享库,/etc/ld.so.conf 及 ld.so.conf.d/libc.conf
- 【linux高级环境编程学习笔记一】管道通信
- 【linux高级环境编程学习笔记二】信号通信
- UNIX环境高级编程——Linux系统调用列表
- UNIX环境高级编程——Linux终端设备详解
- Unix环境高级编程第三版中实例代码如何在自己的linux上运行的问题
- UNIX环境高级编程——Linux系统调用列表
- 【linux高级环境编程学习笔记三】共享内存通信
- UNIX环境高级编程——Linux终端设备详解
- 关于Unix/Linux之Inode之我见----------Unix环境高级编程--目录、文件
- IPC 简单的读写通信实例 linux环境高级编程
- unix环境高级编程 APUE.H最简单编译方法(第二版) Linux和Ubuntu
- UNIX环境高级编程——Linux终端设备详解
- Linux环境高级编程