zoukankan      html  css  js  c++  java
  • Linux环境高级编程

    Linux环境高级编程

    Linux环境高级编程

    一、课程目标

    本次课程涵盖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 - 进程间通信
      • 课程回顾与总结

    六、课程资源

          可获取的课程资源见:教学资源

  • 相关阅读:
    使用MVC框架中要注意的问题(七):HtmlAttributes
    SQL Server:在触发器中对远程链接服务器进行更新操作的问题
    WPF: Video学习资料
    Backgroundposition的妙用
    两本好书
    庆祝俺的键盘劫后余生
    最近反Flash的气氛很浓啊,尤其是Html5这个小P孩(续)
    务虚:大局观、方法与关键点
    《算法引论:一种创造性方法》真是一本好书
    最近反Flash的气氛很浓啊,尤其是Html5这个小P孩
  • 原文地址:https://www.cnblogs.com/lexus/p/2565892.html
Copyright © 2011-2022 走看看