C语言 fopen函数 mode参数

函数原型: FILE *fopen(const char *path, const char *mode);

mode 字符串参数由 rwab+ 5个字符组合而成

b表示二进制模式,不写b表示文本模式,在UNIX系统上这两种模式没有区别(换行符问题)

mode 描述
r 只读,文件必须已存在
w 只写,截断(覆盖),不存在则创建
a 只追加,不存在则创建
r+ 允许读写,文件必须已存在
w+ 允许读写,截断,不存在则创建
a+ 允许读和追加,不存在则创建

Linux 信号表

内核通过信号机制通知用户进程系统中发生的事件(异常)

可以使用 ```kill -SIG pid``` 命令向进程发送信号

可以使用```kill -0 pid```命令检查进程是否存在

man 7 signal 查看可发送的信号类型

stty -a 查看发送信号的键盘设置

序号 名称 默认行为 相应事件
1 SIGHUP 终止 终端线挂断 可以使用 nohup 命令阻止SIGHUP信号发到这个进程
2 SIGINT 终止 来自键盘的中断 当前进程在前台运行时 键入 ^C 内核发送一个SIGINT信号给这个前台进程组中的每个进程
3 SIGQUIT 终止 来自键盘的退出 类似SIGINT 由^\控制 进程退出时产生core文件
4 SIGILL 终止 非法指令
5 SIGTRAP 终止并转储内存 跟踪陷阱
6 SIGABRT 终止并转储内存 来自abort函数的终止信号
7 SIGBUS 终止 总线错误
8 SIGFPE 终止并转储内存 浮点异常 除零错误
9 SIGKILL 终止 杀死程序 SIGKILL不能被捕获或忽略
10 SIGUSR1 终止 用户自定义信号1
11 SIGSEGV 终止并转储内存 无效的内存引用(段故障)
12 SIGUSR2 终止 用户自定义信号2
13 SIGPIPE 终止 向一个没有读用户的管道做写操作
14 SIGALRM 终止 来自alarm函数的定时器信号
15 SIGTERM 终止 软件终止信号 kill 的默认信号
16 SIGSTKFLT 终止 协处理器上的栈故障
17 SIGCHLD 忽略 一个子进程停止或者终止
18 SIGCONT 忽略 继续进程(如果该进程停止)
19 SIGSTOP 停止直到下一个SIGCONT 不是来自终端的停止信号
20 SIGTSTP 停止直到下一个SIGCONT 来自终端的停止信号^Z
21 SIGTTIN 停止直到下一个SIGCONT 后台进程从终端读
22 SIGTTOU 停止直到下一个SIGCONT 后台进程向终端写
23 SIGURG 忽略 套接字上的紧急情况
24 SIGXCPU 终止 CPU时间限制超出
25 SIGXFSZ 终止 文件大小超出限制
26 SIGVTALRM 终止 虚拟定时器期满
27 SIGPROF 终止 剖析定时器期满
28 SIGWINCH 忽略 窗口大小变化
29 SIGIO 终止 在某个描述符上可执行I/O操作
30 SIGPWR 终止 电源故障

MIME类型

Multipurpose Internet Mail Extensions, 多用途网际邮件扩充协议

HTTP中 由 Content-Type 头指定

text - 普通文件,理论上是可读的语言 默认subtype是plain

image - 图像

audio - 音频文件

video - 视频文件

application - 二进制数据 默认subtype是octet-stream

multipart/form-data - 用于POST请求传输数据 HTML表单中设置enctype为multipart/form-data编码来上传文件

multipart/byteranges - 用于把部分响应报文发送回浏览器

MIME类型 描述
text/html HTML页面
text/plain 无格式文本
application/octet-stream 字节流文件 nginx的默认mime-type,浏览器的默认处理方式是下载
application/pdf pdf文档
image/gif GIF格式编码的二进制图像
image/png PNG格式编码的二进制图像
image/jpeg JPEG格式编码的二进制图像

HTTP状态码

HyperText Transfer Protocol, 超文本传输协议

1xx - 消息

2xx - 成功

3xx - 重定向

4xx - 客户端错误

5xx - 服务器错误

状态码 表示 描述
200 成功 处理请求无误
301 永久移动 内容已经移动到Location头中指明的主机上
302 Found 临时重定向(Moved Temporarily) 新的临时URI应当在响应的Location域中返回 大多数浏览器用处理303响应的方式处理302响应。 303 See Other 明确要求浏览器自动重定向
400 错误请求 服务器不能理解请求
403 禁止 服务器无权访问所请求的文件
404 未发现 服务器不能找到所请求的文件
501 未实现 服务器不支持请求的方法
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
505 HTTP版本不支持 服务器不支持请求的版本

Shell特殊变量

变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的第n个参数
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数,"$*"(加引号后)会将所有参数视为一个整体
$@ 传递给脚本或函数的所有参数,"$@"(加引号后)所有参数仍然可被分别遍历
$? 上个命令的退出状态,或函数的返回值
$$ 当前Shell进程ID

Linux manual page section

输入 man n command 查看对应section的手册

section 描述
1 用户命令,例如ls(1)
2 系统调用,例如_exit(2)
3 库函数,例如printf(3)
4 特殊文件,例如null(4)描述了设备文件/dev/null和/dev/zero的作用,这个页面也叫zero(4)
5 系统配置文件格式,例如passwd(5)描述了系统配置文件/etc/passwd的格式
6 游戏
7 其它杂项,例如bash-buildins(7)描述了bash的各种內建命令
8 系统管理命令,例如ifconfig(8)