chapter1--UNIX基础知识

/*20190528*/

/*APUE*/

/*第一章--UNIX基础知识*/

1.Unix操作系统体系结构

内核--》系统调用--》shell/公用函数库--》应用程序

2.登录口令

    1. 口令文件:/etc/passwd; 

    2. 7个字段:登录名:加密口令:数字用户ID:数字组ID:注释字段:起始目录:shell程序(系统决定为用户执行哪一个shell

3.Shell

  1. 命令行解释器:读取用户输入,执行命令

    2.  常用shell:bshell, cshell, kshell

4.文件和目录

  1. 文件名推荐在“字母”,“数字”,“.”,“-”,“_”范围内
  2. 绝对路径:/开头;相对路径名:相对于当前目录的文件

5.输入和输出

  1. 文件描述符:小的非负整数,内核用以标识一个特定进程正在访问的文件;读写文件时都可以使用
  2. 新程序文件描述符:标注输入,标准输出,标准错误,默认链向终端;可以重定向到某个文件(ls > file.list)
  3. 不带缓冲的I/O:read(), write(), open(), lseek(), close()都使用文件描述符
  4. 标准I/O:为不带缓冲的I/O提供了一个带缓冲的接口,无需考虑最佳缓冲区大小;简化了对输入行的处理;例如printf(), fgets()...定义在#include<stdio.h>中
  5. 标准I/O常量stdin, stdout;EOF也定义在#include<stdio.h>中

6.程序和进程

  1. 程序:存储在磁盘上某个目录的可执行文件;内核使用exec()函数将程序读入内存并执行
  2. 进程:程序的执行实例;UNIX系统确保每一个进程都有一个唯一的数字标识符(进程ID,非负整数)
  3. 进程控制:fork(), exec(), waitpid()

    6.2线程

  1. 所有线程共享同一地址空间,文件描述符,栈,进程相关属性(访问同一存储区)
  2. 需采取同步措施
  3. 用ID标识,旨在所属进程内有效;可用线程ID引用该线程

7.出错处理

  1. #include<errno.h>中定义了errno及可以赋予的各常量
  2. 不出错其值不会被例程清除;任何函数都不会将errno置为0
  3. 打印出错信息函数strerror()【#include<string.h>】, perror()[#include<stdio.h>]
  4. 出错恢复:非致命性错误可以恢复

8.用户标识

(1)用户ID

(2)用户组ID

9.信号

(1)通知进程发生了某种情况

(2)处理方式:忽略,默认,信号处理函数

10.时间值

(1)日历时间

(2)进程时间(CPU时间):始终时间,用户CPU时间,系统CPU时间

11.系统调用和库函数

(1)系统调用:直接进入内核的入口点;UNIX为每个系统调用在标准c库中设置一个具有同样名字的函数

(2)库函数可以被替换,系统调用不能

(3)系统调用提供最小接口,库函数提供比较复杂的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值