一个命令行工具的返回码该怎么定

工具跑完 return 的那个数,惯例是【0】。

开始练习 →

失败之后,三个回执一起看

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)打开一个根本不存在的路径: #include <stdio.h> #include <errno.h> #include <string.h

开始练习 →

🔴 不同的失败,不同的码

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)同一个函数,三种走法: #include <stdio.h> #include <stdlib.h> /* 真实工具的约定:0 表示成功,非 0

开始练习 →

把失败的三个回执都读出来

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)三个数:失败了没、errno 变了没、是不是"文件不存在"。

开始练习 →

⚠️ 按失败的原因给不同的码

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)三种情况要分出三个码。参数不对该比文件打不开更早被发现。

开始练习 →

🔴 失败的路也要把东西收拾干净

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)三条路,两条是失败的。三个返回码都不变,只让最后那个差值变成 0。

开始练习 →

gdb 里最先该敲的两条命令是什么

拿到一个会崩的程序,进 gdb 之后最先做的是【0】。

开始练习 →

⚠️ 编译时不加 `-g` 会怎样

没加 -g 就直接调试,最直接的损失是【0】。

开始练习 →

把「崩在哪一层」自己打出来

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)⚠️ 判题机上跑不了 gdb,所以这一节练的是**同一件事的另一半**:**把 gdb 会告诉你的东西,自己在程序里打出来。**会读会打,换到有 gdb 的地方一样用。

开始练习 →

🔴 从哪一步开始不对的

(本条路线统一用 gcc -std=c11 -O0 -Wall 编译)把一段过程切成三步,每步都留个回执: #include <stdio.h> /* 定位 bug 的标准动作:把一段过程切成几步,每步留一个回执, 看是

开始练习 →