1. 首页
    2. 未分类

    【读书笔记】UNIX环境高级编程-笔记-第一章-UNIX基础知识

    UNIX基础知识

    • UNIX体系结构图
    • 登录
      • /etc/passwd结构:登录名:加密口令:用户ID:组ID:注释字段:开始目录:shell(共7个字段)
      • shell是一个命令行解释器,读取用户输入,执行命令
    • 文件目录
      •  ls命令简易实现,第4章具体研究
      • opendir打开目录返回DIR类型指针
      • readdir获取DIR类型指针,返回dirent类型指针,dirent结构体中有d_name为目录项名字
      • closedir关闭opendir打开目录返回的DIR
      • 上面几个函数包含在<dirent.h>中
    • 输入输出
      • 文件描述符是一个小的非负整数,标识特定进程正在访问的文件
      • 标准输入、输出、错误STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO在POSIX标准中值分别为0,1,2,定义在头文件<unistd.h>
      • open、read、write、lseek、close提供了不带缓存的I/O,这些都函数使用文件描述符,包含在头文件<unistd.h>
      • stdin、stdout、stderr定义在<stdio.h>中,表示标准输入、输出、错误
      • 标准IO getc、putc、gets、puts自带缓存区,包含于stdio.h
    • 程序和进程
      • 程序是磁盘上的可执行文件,内核使用exec函数将程序读入内存,执行,共7个exec函数,第8章具体说明
      • 程序执行实例为进程,有的操作系统也称任务,UNIX系统确保每个进程都有一个唯一数字标识符,即进程ID,使用getpid获取当前进程ID,返回pid_t类型,该类型最大为一个长整型
      • fork创建一个新进程,对父进程返回子进程ID,对子进程返回0。exexlp执行一个命令。waitpid等待一个进程结束,终止状态存在参数status中
      • 一个进程内所有线程共享同一地址空间、文件描述符、栈以及与进程相关的属性,线程也有标识ID,只在进程内有效,12章具体研究线程
    • 出错处理
      • <errno.h>中定义了errno和可以赋予它值的常量,注意两条规则:1.如果没有出错,其值不会被例程清除,仅当函数返回值指明出错时才检验其值。2.任何函数不会将errno值设为0,<errno.h>中的常量也没有0
      • C标准定义了两个函数,打印出错信息:1.strerror(int errnum)将errnum映射为出错消息字符串,并返回指针2.perror传入一个消息根据error的值,在其后输出错误
    • 用户标识
      • root的用户ID为0
      • /etc/group中包含用户组的具体信息,大多数系统允许一个用户属于多个组
      • getuid 获取当前用户id , getgid 获取当前用户组id
    • 信号
      • singnal(信号,函数)来指明当产生“信号”时要调用的“函数”
      • 在第10章具体研究
    • 时间值
      • 日历时间:1/1/1970 00:00:00以来经历的秒数,使用time_t保存
      • 进程时间:以时钟滴答计算,用来度量进程使用CPU资源。度量一个进程的执行时间,UNIX用3个进程时间值维护
        1. 时钟时间:(wall clock time)是进程运行总时间,从进程开始到进程结束,包含中断和其他进程占用CPU的时间
        2. 用户CPU时间:执行用户指令的时间量
        3. 系统CPU时间:该进程在执行内核程序所经历的时间
      • /usr/bin/time是一个内置函数测量进程时间
    • 系统调用和库函数
      • 操作系统提供多种服务入口点,由此程序向内核请求服务,这些入口点被称为系统调用,系统调用接口可视为C函数
      • 系统调用和库函数在用户看来都是C函数,但有本质区别
    评分 0, 满分 5 星
    0
    0
    看完收藏一下,下次也能找得到
    • 版权声明:本文基于《知识共享署名-相同方式共享 3.0 中国大陆许可协议》发布,转载请遵循本协议
    • 文章链接:https://icebmji.com/blog/?p=216 [复制] (转载时请注明本文出处及文章链接)
    上一篇:
    :下一篇

    发表评论

    gravatar

    此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

    沙发空缺中,还不快抢~