POSIX 相关 API 的 Zeal 地址:

下载解压到 Zeal 的 docsets 就可。

posix to c is like dom api to ecma js

tcc bug


TOCTTOU 傻逼名字 + 1

关于 strcmp vs strncmp 的随想。

注意到 apue 上有些地方用的 strcmp, 思考了一下发现主要是 zip 是否穷尽。
如果攻击者构造极长的字符,那 strcmp 会缓冲区溢出。
但是 strcmp with fixed str 有长度上限。
就只会判断开头的 2 个

关于 flag 的一些随想

比如 POSIX 里面打开文件用 open(xxx, READ | WRITE) 啥的
这里 READ 就是 bit_flag,也就是说实现了这样一种系统:
两两不同
元素间可以取 OR
可以判定某一位
那这种特征让我们想到什么呢?线性空间。每一位都是正交基。& A 就是取了这个上面的投影。| 就是线性组合,^ 就是去掉。

类型系统的设计会极大影响程序的样子

里面洋洋洒洒写了一堆 lock + pthread 的 api。
rust be like : Arc<Mutex<T>>
以及线程并行直接 rayon,还不容易写错。
这就是 ~~抽象~~ 调库 带给我的自信。
类似生成元 vs 生成的结果

守护进程

提到 init.d ,太老了,现在全部 systemd 了,除了 alpine

int instead of struct *

各种 socket,file 都是用 int 当 index 指代对象,而不是一个 Socket 对象传来传去。
比如都是 int fd

getopt

体现了老工具一贯的难用。
和 sed 这种一脉相承。

还有一堆 aio_* 相关的 api,先略过

api style

由于 POSIX 的设计,所以里面没有链式调用,而是清一色的 api 调用 + 返回 fd + 判断 NULL
好处:系统 api 实现简单。
坏处:没有半点类型系统。写错完全没 b 数。
思考下面的例子
lock 和 unlock 全凭个人自觉,写错就炸。
自带 utf8
自带错误处理
写起来可以链

评价

POSIX 就是 portable 的 shit, 比如 cosmopolitan
和 anal sex 一样
 
Loading...
Steven Lynn
Steven Lynn
喂马、劈柴、周游世界
最新发布
我与 Dify 的半年
2025-3-9
我的2022年终小结
2024-11-9
记录雅思考试经历与一点学习心得
2024-11-9
Hackergame 2024 思路小结
2024-11-9
黑客松、日本、入职:我的2024下半年的总结
2024-11-9
NotionNext:基于Notion和NextJS的开源博客
2024-11-9