





















POSIX 是一套"操作系统行为规范",让你写的程序能在不同 Unix-like 系统上跑起来。
想象不同品牌的插座:
text
中国插座 美国插座 欧洲插座
‖ | /\
‖ | / \
每个国家标准不一样,电器换个国家就没法用。
POSIX 就是定义了一个"统一插座标准",厂商按这个标准造插座,电器就到哪都能用。
text
1970s-1980s:
Unix 诞生后,各公司拿去魔改
├── AT&T Unix
├── BSD Unix
├── HP-UX
├── AIX
└── ...
问题:同样功能,各家实现不一样
程序换个系统就得重写 😤
IEEE 组织出来说:"大家都按我这个标准来!"
规定了比如:
| 功能 | POSIX 规定 |
|---|---|
| 列出文件 | ls 命令必须支持 -l -a 参数 |
| 读写文件 | open() read() write() 函数的行为 |
| 进程操作 | fork() exec() 怎么工作 |
| 文件路径 | 用 / 分隔,.. 表示上级目录 |
text
完全遵守 ✅ 部分遵守 ⚠️ 不遵守 ❌
───────────── ────────────────── ──────────
macOS Linux(大部分兼容) Windows(自己一套)
各商业 Unix Android
WSL(兼容层模拟)
Windows 自己搞了一套:
\ 而不是 /CreateFile 而不是 open)fork()所以 Linux 程序不能直接在 Windows 跑,反之亦然。
WSL(Windows Subsystem for Linux)本质上就是微软帮你做了个"POSIX 翻译层"
C
// 遵守 POSIX 的写法
// 这段代码在 Linux / macOS / Unix 上都能编译运行 ✅
#include <unistd.h>
#include <fcntl.h>
int main() {
int fd = open("test.txt", O_RDONLY); // POSIX 标准函数
char buf[100];
read(fd, buf, 100); // POSIX 标准函数
close(fd); // POSIX 标准函数
return 0;
}
| 问题 | 答案 |
|---|---|
| POSIX 是什么 | 操作系统接口的统一标准 |
| 谁制定的 | IEEE(电气电子工程师协会) |
| 规定了什么 | 命令行工具、C语言API、文件系统规则等 |
| 好处是什么 | 写一次代码,多个系统能跑 |
| 谁不遵守 | Windows(有自己的标准) |
免责声明 本文档所有内容仅供安全研究、学术交流与技术学习使用,严禁用于任何未经授权的逆向破解、网络攻击、隐私窃取、恶意软件开发及其他违反《中华人民共和国网络安全法》《数据安全法》等法律法规的行为,使用者应确保已获得目标软件权利人的合法授权并自行承担因使用本文档内容所产生的一切法律责任与后果,作者不对任何直接或间接损害承担任何责任,继续阅读即视为您已知悉并同意上述全部条款。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。