IO编程
多任务编程(进程、线程)
网络编程
数据库编程
数据结构
1.Linux: PC三大操作系统之一 Linux是操作系统的内核 真正的操作系统:Ubuntu
主要功能: 管理CPU
管理内存
管理硬件设备
管理文件系统
任务调度
2.Shell:
1.保护Linux内核(用户和Linux内核不直接操作)
2.命令解释器(用户操作->Shell->内核->硬件设备->用户接收)
3.Shell命令:
man手册(帮助手册)
1.标准命令
2.系统调用
3.库函数
4.设备说明
5.文件格式
6.娱乐
7.杂项
8.管理员命令
1.Shell基本命令:
1.ls 2.cd 3.touch/rm 4.mkdir/rmdir 5.cp 6.mv
2.Shell文件查看命令:
1.cat:查看文件内容(以字符形式)
ASCII码文件(文件内容均能在终端现实的ASCII码字符)
.c .txt 文本文件
二进制文件(文件内容不能够在中断显示,或者显示乱码)
图片 视频 压缩包
示例:cat+filename
2.od -c
以字符或ASCII码形式显示文件内容
示例:od -c filename
3.head/tail
查看文件开头(结尾)内容(默认十行)
-n 指定显示行数
示例:head/tail filename
head/tail -n 行数 filename
3.文件查找命令:
1.find:
查找一个文件的路径
示例:
find 文件夹 -name 文件名
通配符:
*:匹配任意长度 任意字符的文件名 eg:txt.* *.txt
?:匹配一位长度 任意字符的文件名
[]:匹配一位长度 指定字符的文件名 eg:[1,2,3,4] [1-4] [^4]
2.whereis:
查找指定内容的路径
示例:
whereis 二进制程序名/软件名
3.grep:
查找文件中内容
示例:
grep 'printf' stdio.h
4.重定向:
将原本要输出在终端的内容重定向到一个文件中
>> 追加重定向 在原来内容的基础上追加新的内容
> 覆盖重定向 将原来的内容覆盖掉
示例:
ls > file.txt
ls >> file.txt
5.管道:
将前面命令的输出作为后续命令的输入
示例:
ps -ef | grep bash
6.其余命令:
ps -ef 查看进程信息
echo 在终端打印内容
du 测试文件大小
-k/-m 按照kb或mb测试
7.压缩解压命令:
.tar.gz
.tar.bz2
1.压缩命令:
tar -zcvf 压缩文件包名.tar.gz 文件夹
tar -jcvf 压缩文件包名.tar.bz2 文件夹
2.解压命令:
tar -zxvf 压缩文件包名.tar.gz
tar -jxvf 压缩文件包名.tar.bz2
b block 块设备文件
按块扫描设备信息的文件
存储设备
c character 字符设备文件
按字符扫描设备信息的文件
d directory 目录文件
存放文件
- 普通文件
存放数据
图片、音视频、压缩包、文本文件
l link 链接文件
快捷方式
s socket 套接字文件
用来套接字通信
p pipe 管道文件
用来进程间通信
1.ASCII码文件
文件中所有的字符均能够在终端上显示的字符
文本文件、程序.c
2.二进制文件
文件中存放数据的二进制形式
图片、音视频、压缩包
ASCII码文件是特殊的二进制文件
标准IO是库函数
文件IO是系统调用
系统调用:功能强大,应对复杂场景不够灵活
库函数:针对系统调用的封装,使用方便灵活
标准IO可以在Windows或者Linux平台使用
文件IO只能在Linux系统平台使用
getchar putchar scanf printf gets puts -> 标准IO
#include
fopen/fclose
fgetc/fputc
fgets/fputs
fscanf/fprintf
fread/fwrite
fseek/rewind/ftell
打开文件 -> 读写文件 -> 关闭文件
fopen fclose
fgetc/fputc 单个字符的读写
fgets/fputs 字符串的读写
fscanf/fprintf 格式化字符串的读写
fread/fwrite 二进制文件的读写
1.fopen
FILE *fopen(const char *pathname,const char *mode);
功能:
打开pathname对应的文件并与其建立一个流
参数:
pathname:要打开文件路径的字符串
mode:
r 只读 文件不存在报错 文件存在只读打开
r+ 读写 文件不存在报错 文件存在读写打开
w 只写 文件不存在创建 文件存在将文件清空,只写打开
w+ 写读 文件不存在创建 文件存在将文件清空,写读打开
a 追加只写 文件不存在创建 文件存在追加只写打开
a+ 追加写读 文件不存在创建 文件存在追加写读打开
返回值:
成功返回打开的文件流指针
失败返回NULL
2.fclose
int fclose(FILE *stream);
功能:
关闭文件,释放文件流指针
参数:
stream:文件流指针
返回值:
成功返回0
失败返回EOF(-1)
1.具有方向性(读写)
2.具有连续性
3.具有顺序性
句柄:操作对象的一个抽象
stdin 标准输入流 从终端读取数据
stdout 标准输出流 向终端打印数据
stderr 标准出错流 向终端打印数据
getchar scanf gets 通过stdin来读取终端数据
putchar printf puts 通过stdout来在终端打印数据
perror 通过stderr来向终端打印数据
缓存分为3类:
1.全缓存 4k
缓存区满刷新
刷新条件:
1.缓存区满刷新(全缓存大小:4096)
2.使用fflush函数强制刷新
3.程序结束刷新
2.行缓存 1k
遇到\n刷新
刷新条件:
1.缓存区刷满刷新(行缓存大小:1024)
2.遇到\n刷新
3.fflush函数强制刷新
4.程序结束刷新
与终端建立的缓存 stdin stdout
3.不缓存 0k
直接刷新
缓存区大小 0k stderr
人机交互、界面控制、出错处理
4.setvbuf
功能:
改变一个流的缓存类型
参数:
stream:文件流指针
buf:指定缓存空间的首地址
mod:
_IONBF 不缓存
_IOFBF 全缓存
_IOLBF 行缓存
int fputc(int c,FILE *stream);
功能:
向流中写入一个字符
参数:
c:写入字符的ASCII码值
stream:文件流指针
返回值:
成功返回写入字符的ASCII值
失败返回EOF
注意:
fputc只能写入单个字符