基于Red Hat Linux 9
1. Linux系统概述
1.1 Linux的内核版本和发行版本
内核版本号之后还会附加一个数字,比如2.4.20-8,最后的数字用来表示该版本内核是第几次被修订的。
2是主版本号,4是次版本号,20是次次版本号。重大改动主版本号加1,加入新特性次版本号加1,轻微改动次次版本号改动。
次版本号为奇数表示该版本是测试版,偶数是稳定版本。
1.2 Linux的基本使用
1.2.1 Linux终端
Linux把显示器和键盘合称为终端。
在终端上,通过输入Shell命令来控制和使用计算机。
1.2.2 Linux Shell
Shell是命令解释器
1.3 Linux下的开发环境和过程
开发环境:字符界面和图形化
在字符界面的开发环境中,可以使用Vi,Vim,Emacs文本编辑器来编写源程序,GCC来编译,GDB来调试。如果开发的是大型程序,用Makefile文件来编译程序,用Git和CVS进行版本管理。
2. C,Vi和Emacs编辑器
2.1 C语言的基本数据类型
在C语言中,数据类型分为基本数据类型,构造数据类型(数组,枚举类型,结构体和联合体),指针类型,空类型。
2.1.1 整型
整型常量为常数,C语言常见的整型常量有:16进制(0x10),10进制(22),8进制(01000)。
int是整型变量的基本类型,整型变量还有短整型(short int或short)和长整型(long int或long),在32位机器上,短整型为2字节(16位),基本整型和长整型为4字节(32位)。
一个短整型short变量的值的范围 -32768~32767,如果使用unsigned short 就变成了65535
C语言没有规定各个数据类型所占内存的字节数,具体情况具体分析。所占内存的字节数可以用sizeof来确定。
#include<stdio.h>
int main(){
short int i;
int j;
long int k;
printf("short-length:%d\n",sizeof(i));
printf("int-length:%d\n",sizeof(j));
printf("long-length:%d\n",sizeof(k));
return 0;
}
运行结果:
wanglei@wanglei-PC:~/cpro$ gcc -o test1 1.c
wanglei@wanglei-PC:~/cpro$ ./test1
short-length:2
int-length:4
long-length:8
2.1.2 浮点型
浮点常量即实数,有两种表示形式。
(1)十进制小数形式。它由正负号,数字,小数点组成。如3.21,0.24,.57,0.0
(2)指数形式。一般形式为xEy和xey,y必须为整数。如2.15e1
浮点型变量有单精度(flout型)和双精度(double型)两种,一般浮点型变量它们在内存中占4个字节和8个字节。
单精度有效数字是7位,双精度有效数字是16位。
#include<stdio.h>
int main(){
float a = 88888.88888; /*整数部分5位,小数部分5位*/
double b = 88888888888.8888888; /*整数部分11位,小数部分7位*/
printf("a--->%f\n",a);
printf("b--->%f\n",b);
return 0;
}
运行结果
wanglei@wanglei-PC:~/cpro$ gcc -o test2 2.c
wanglei@wanglei-PC:~/cpro$ ./test2
a--->88888.890625 #有效位是7位,最后一位四舍五入
b--->88888888888.888885 #有效位是16位
字符串常量
2.1.3 字符型
字符常量是用单引号括起来的一个字符
转义字符以反斜杠“\”开头
字符串常量是由一对双引号括起来的字符序列
系统自动在字符串尾部加上一个字符‘\0’,用来标识这个字符串的结束。
符号常量,比如 #define PI 3.14159
2.2 算术运算符
i++:先使用i,再加1
i–:先使用i,再减1
++i:先把i的值加1,再使用
–i:先把i的值减q,再使用
2.3 运算符和表达式
2.3.1 逗号运算符和逗号表达式
之后再去补充
2.4 标准输入输出函数
6. 文件操作
6.1 概述
Shell命令是OS提供给普通用户使用的接口。
系统调用是OS给程序员使用的接口。
如果忘记命令的参数和怎么使用,可以输入man命令来查看函数原形。
6.2 Linux文件结构
文件包括两方面的内容:
- 文件本身包含的数据
- 文件的属性(元数据),包括文件访问权限,所有者,文件大小,创建日期
在LInux根目录下
- /bin 用于存放普通用户可执行命令
- /boot 内核以及启动系统时需要的文件
- /dev 设备文件的存储目录
- /etc 用于存放系统的配置文件
- /home 普通用户的主目录
- /lib 存放库文件
- /proc 该目录是一个虚拟文件系统,只有系统运行时才存在
- /root 超级用户root的主目录
- /sbin 存放管理系统的命令
- /tmp 临时文件目录
- /usr 用于存放系统应用程序及相关文件
- /var 用于存放系统中经常变化的文件
6.2.1 Linux的文件系统模型
对物理磁盘的访问都是通过设备驱动程序来进行的,而对设备驱动的访问有两种途径:
- 通过设备驱动本身提供的接口(不稳定,不安全)
- 通过虚拟文件系统VFS提供给上层应用程序的接口
VFS的使用体现了Linux文件系统的最大特点–支持多种不同的文件系统。Linux不仅支持EXT2,EXT3还支持Windows的vfat。
6.2.2 文件的分类
Linux包含以下文件类型
- 普通文件:最常见的文件类型,对普通文件内容的解释由处理该文件的应用程序完成。
- 目录文件:目录文件就是目录,目录也有访问权限。目录文件的内容就是该目录下的文件和子目录的信息,只有内核可以写目录文件。
- 字符特殊文件:用于表示系统中字符类型的设备。比如键盘,鼠标等,这些硬件对OS来说只是一个文件。
- 块特殊文件:用于表示系统中块类型的设备,如硬盘,光驱等。
- FIFO:这类文件用于进程间的通信,也称为命名管道。
- 套接字:主要用于网络通信,也可以用于一台主机上的进程之间的通信。
- 符号连接:指向另一个文件,是另一个文件的引用。
可以通过ls -l的第一个字母来判断文件类型
6.2.3 文件的访问权限控制
wanglei@wanglei-PC:~/qemu$ ll
总用量 5580356
drwxrwxr-x 4 wanglei wanglei 4096 10月 9 14:21 ./
drwx------ 34 wanglei wanglei 4096 10月 11 08:50 ../
drwxrwxr-x 41 wanglei wanglei 4096 10月 9 14:20 build/
drwxr-xr-x 55 wanglei wanglei 4096 8月 12 2020 qemu-5.1.0/
-rw-rw-r-- 1 wanglei wanglei 62911540 8月 12 2020 qemu-5.1.0.tar.xz
-rw-r--r-- 1 wanglei wanglei 5651300352 10月 9 15:11 ubantu.qcow2
从左到右依次是:文件属性,文件数,所有者,拥有该文件的用户所属的组,文件大小,文件创建时间,文件名
文件属性第1位表示文件类型,剩下9位表示文件的访问权限。
r=4 w=2 x=1