第一章UNIX基础知识
什么是操作系统
- 操作系统可被定义为一种软件,控制计算机硬件资源,提供程序运行环境(提供服务:执行新程序、打开文件、读文件、分配存储区和获得的当前时间)
- 软件可被看成是内核 其接口被称为 系统调用
- 广义上:操作系统包含 内核 和 系统实用程序 、shell、应用程序、公共函数库等
参考 系统实用程序
shell
shell 是命令解释器,相当于翻译,将指令转换为内核能听懂的语言。
查看 shell 版本
文件和目录
1. 文件系统
‘ / ’ 表示根目录
目录是 包含文件属性的信息、文件名的文件
文件属性:文件类型(普通文件、目录)、大小、所有者、权限、最后的修改日期等等。
2. 文件名
文件名:不能出现 空格 和 /
新建目录会创建两个文件名: . 和 …
‘ . ’ 当前目录 ‘ . . ’ 上一级目录
#####3. 路径名
绝对路径: 以 / 开头的路径
相对路径:相对于当前目录
样例:列出一个目录中的所有文件的名字 ls命令实现
编者自定义函数
#include<sys/types.h>
#include<dirent.h>
int main(int argc,char* argv[])
{
DIR *dp;
struct dirent *dir;
if(argc != 2){
// err_quit 编者自定义函数
err_quit("this is directory name"); }
dp = opendir(argv[1]); // dp 相当于文件
if(dp == NULL){
err_sys("can't open %s",argv[1]);}
// argv有参数 有文件
dir = readdir(dp);
while(dir != NULL)
printf("%s\n",dir->d_name);
closedir(dp);
exit(0);
}
dirent只是起着一个索引的作用
总结一下,想要获取某目录下(比如a目录下)b文件的详细信息,我们应该怎样做?
首先,我们使用opendir函数打开目录a,返回指向目录a的DIR结构体c。
接着,我们调用readdir( c)函数读取目录a下所有文件(包括目录),返回指向目录a下所有文件的dirent结构体d。
然后,我们遍历d,调用stat(d->name,stat *e)来获取每个文件的详细信息,存储在stat结构体e中。
总体就是这样一种逐步细化的过程,在这一过程中,三种结构体扮演着不同的角色。