C 获取程序名称的 4 种方法:`__progname`、`argv[0]`、`/proc/self/exe` 与 `GetModuleFileName`
在 C 程序里获取“当前程序名”没有单一标准答案,不同平台和目标适合的方法并不一样。本文把 `__progname`、`argv[0]`、`/proc/self/exe` 和 Windows 的 `GetModuleFileName` 分开讲清楚,并补上各自能拿到的是“名称”还是“完整路径”,方便你按平台快速选型。
在 C 程序里获取“当前程序名”没有单一标准答案,不同平台和目标适合的方法并不一样。本文把 `__progname`、`argv[0]`、`/proc/self/exe` 和 Windows 的 `GetModuleFileName` 分开讲清楚,并补上各自能拿到的是“名称”还是“完整路径”,方便你按平台快速选型。
![C 获取程序名称的 4 种方法:`__progname`、`argv[0]`、`/proc/self/exe` 与 `GetModuleFileName`](https://img.ipython.cn/uploads/20260824/17875199186a8b63ae3cd34120923431.webp)
stdlib.h 是 C 语言里最常用的标准库头文件之一,覆盖动态内存、随机数、字符串转数值和程序控制等基础能力。本文按使用场景梳理常见函数,保留示例代码,并补上各函数适用边界与使用时的判断要点。

面对 GB 级文件下载,如果仍按“整文件读入内存再返回”的老办法处理,服务很容易被高内存占用拖慢。本文围绕 Gin 的流式响应展开,说明分块传输的实现方式、适用场景、错误处理和优化重点,帮助你判断何时该用流式下载、该怎样落地。

`dmesg` 是 Linux 排查问题时最先该看的日志之一,但真正有价值的信息并不平均分布在整份输出里。本文按硬件、驱动、内核、安全、网络与磁盘几个方向梳理重点,帮助你更快判断哪些日志是状态记录,哪些已经指向故障。

这篇文章围绕 C++ 中文件名校验展开,按“基础规则、验证分层、落地实现”重新梳理思路。重点保留长度限制、非法字符、扩展名检查、`std::filesystem` 与权限判断等关键代码与编译信息,便于直接用于实际项目。

这篇文章把 Casbin 中最容易混淆的两部分拆开讲清:Model 负责描述权限判断语法,Policy 负责承载可持久化的规则数据。你可以据此快速判断 Model 配置至少要写哪些段、什么时候需要加入 RBAC 的角色定义,以及为什么 Casbin 只提供 Model 加载能力,却把 Policy 的读写交给 adapter。

本文围绕一个 8051 + 8255 的 4x4 矩阵键盘实例,梳理端口分配、扫描逻辑和 LED 显示流程。你可以据此看清 `COM8255=0x81` 的配置含义、`keyscan` 的逐行译码方式,以及程序为何能把按键结果实时显示到数码管。 在 8051 单片机实验里,矩阵键盘和 LED 显示经常一起出现,但很多教程只贴代码,没有把 8255 的端口分工和扫描逻辑讲透。

这篇文章围绕 C++ 跨平台库头文件的设计方法展开,重点说明头文件该暴露什么、平台差异应放在哪里,以及 Linux、Windows、macOS 下常见的宏、类型与编译处理方式。文中保留示例代码和编译命令,适合作为搭建可移植接口层的入门参考。

是 C 语言里最常用的字符处理头文件之一,覆盖字符分类、大小写转换和少量扩展判断。本文按“该在什么场景用哪个函数”的思路重组内容,并保留示例代码,方便你快速查用法、看边界和搭配方式。

是 C 标准库里最常用的数学头文件之一,覆盖平方根、绝对值、幂、指数、对数和三角函数等基础能力。本文按“该用哪个函数、参数有什么要求、头文件怎么选”重新整理,便于快速查阅和上手。

这篇实践文章围绕“按游戏维度聚合、允许少量丢弃、又要控制3分钟时效”的上报场景,介绍了如何用 Redis List、Set 与 Lua 脚本实现定长队列和批量消费。相比直接上 MQ,这套方案更贴近业务约束,已在线上以约 1w QPS 平稳运行。

安装好 Clang 后,想单独拿到预处理结果,直接用 `clang -E` 或 `clang++ -E` 即可。它只负责展开头文件、替换宏、移除注释,不会继续进入编译阶段;关键区别在于 C 通常输出 `.i`,C++ 更推荐生成 `.ii`。 很多人装好 Clang 后,第一反应是“怎么把预处理结果单独导出来”,但真正上手时又常被 C/C++ 模式、头文件路径和输出方式这些细节卡住。
