1.UNIX 系统模型
内核是操作系统的核心, 所以操作系统也被称为内核 Shell 本意为壳, 是操作系统最外面的一层
2. 通过以下三个问题来理解系统编程:
(1)它能做什么?(分析程序)
(2)它是如何实现的?(学习系统调用)
(3)能不能自己编写一个?(编程实现)
例如: who 命令的编写
1)首先了解 who 的作用: 显示当前系统中已登录的用户信息;
2)Who 命令如何工作:
查看 who 的联机帮助:(所输入的命令及得到的结果因 Linux 版本而异, 本实验环境为 Ubuntu14.04)
man who
由此得知, 已登录用户的信息存放在 / var/run/utmp, 继续查看联机帮助:
- man -k utmp
- man 5 utmp
即已经得到我们想要的结果, 接下来的工作就是打开 utmp, 然后读取所需字段 (具体实现如下) 由于关乎文件的操作, 所以需要用到的系统调用及函数大致有: open,read,lseek,close,creat,write
3)编写一个能实现 who 命令的函数
总结:
1. 对于 cp 命令, 以及第三章中 ls 命令等的编写, 都遵循上述三个问题来实现, 通过对这三个问题的解答, 来学习目录和文件的类型与属性
2. 对目录的操作: opendir,readdir,closedir
3.stat 系统调用
功能: 得到文件信息
stat 把有 path 所指的文件的信息复制到 buf 所致的结构中例如:
这是一个实现 find 命令的部分函数, 它将指定大小的文件的文件名输出到屏幕, 即需用到文件大小, 就必须使用 stat 来获取文件的信息, 然后判断该文件的大小是否符合要求
stat 获取的文件信息包括:
即我们可以输出我们想输出的文件的任意信息
来源: http://www.92to.com/bangong/2018/03-27/33486085.html