UNIX环境高级编程学习笔记

目录

  1. 1. UNIX 基础
  2. 2. UNIX 标准
    1. 2.1. ISO C
    2. 2.2. IEEE POSIX
  3. 3. 文件IO
    1. 3.1. 内核描述符
    2. 3.2. 文件操作(无缓冲区)
      1. 3.2.1. open
      2. 3.2.2. creat
      3. 3.2.3. close
      4. 3.2.4. lseek
      5. 3.2.5. read
      6. 3.2.6. write
    3. 3.3. 文件共享
  4. 4. 文件和目录
    1. 4.1. 文件类型
    2. 4.2. 文件权限管理
    3. 4.3. 文件系统(UnixFileSystem)
    4. 4.4. 硬链接/符号链接
    5. 4.5. 文件的时间
  5. 5. 标准IO库
    1. 5.1. 打开/关闭流
    2. 5.2. 读/写流
      1. 5.2.1. 1. 每次一个字符
      2. 5.2.2. 2. 每次一行
      3. 5.2.3. 3. 二进制IO
  6. 6. 系统数据文件和信息
  7. 7. 进程环境
    1. 7.0.1. main/exit
  8. 7.1. C程序存储空间
  9. 7.2. 动态分配内存
  • 8. 进程控制
    1. 8.1. fork()
    2. 8.2. exit()/wait()
    3. 8.3. exec()
    4. 8.4. system()
  • 9. 进程关系
  • 10. 信号
  • 11. 线程
  • 12. 线程控制
  • 13. 守护进程
  • 14. 高级IO
    1. 14.1. 非阻塞IO
    2. 14.2. 记录锁
    3. 14.3.
  • 15. IPC: 进程间通信
    1. 15.1. 管道/协同进程/FIFO
    2. 15.2. XSI IPC: 消息队列/信号量/共享存储器
      1. 15.2.1. 消息队列
      2. 15.2.2. 信号量
    3. 15.3. 共享存储
  • 16. 网络IPC :套接字
  • 17. 高级进程间通信
  • UNIX环境高级编程2E

    UNIX 基础



    UNIX 标准

    ISO C

    IEEE POSIX



    文件IO

    内核描述符

    文件操作(无缓冲区)

    open


    creat



    close

    lseek

    read


    write




    文件共享


    文件和目录

    文件类型


    文件权限管理






    文件系统(UnixFileSystem)


    硬链接/符号链接


    文件的时间

    标准IO库


    打开/关闭流



    读/写流

    1. 每次一个字符



    2. 每次一行


    3. 二进制IO






    系统数据文件和信息

    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"highlight ruby"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"code"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">nobody:*"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:-"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">2"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:-"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">2"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:Unprivileged "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"title class_"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">User"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:/var/empty"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:/usr/bin/false
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">root:*"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">0"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">0"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:System "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"title class_"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">Administrator"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:/var/root"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:/bin/sh
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">daemon:*"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">1"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">1"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:System "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"title class_"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">Services"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:/var/root"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"symbol"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">:/usr/bin/false


    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"highlight apache"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"code"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"attribute"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">mac:~ kpy$ finger -p kpy
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"attribute"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">Login: kpy            Name: KPY
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"attribute"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">Directory: /Users/kpy               Shell: /bin/bash
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"attribute"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">On since 六  "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">3 "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">25 "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">19:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">51 (CST) "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"literal"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">on console, idle "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">20:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">48 (messages "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"literal"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">off)
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"attribute"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">On since 六  "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">3 "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">25 "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">21:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">55 (CST) "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"literal"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">on ttys000, idle "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">0:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">03
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"attribute"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">On since 日  "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">3 "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">26 "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">16:"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"number"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">40 (CST) "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"literal"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">on ttys001
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"attribute"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">No Mail.
    "bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"line"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">"attribute"bd bd-beg">"bd-box"bd bd-beg">">"bd bd-beg">">mac:~ kpy$





    进程环境

    main/exit



    C程序存储空间

    动态分配内存



    进程控制


    fork()




    exit()/wait()




    exec()




    system()



    进程关系






    信号












    线程









    线程控制






    守护进程



    高级IO

    非阻塞IO

    记录锁













    IPC: 进程间通信

    管道/协同进程/FIFO



    XSI IPC: 消息队列/信号量/共享存储器

    消息队列







    信号量



    共享存储






    网络IPC :套接字












    高级进程间通信