POSIX
可移植操作系统接口标准,定义操作系统应提供的接口规范
时间轴 (近 90 天)
struct dirent是POSIX标准中用于表示目录项的结构体,通常由readdir函数填充并返回,至少包含d_name(文件名)和d_ino(inode号)等成员。
POSIX接口本质上是对系统调用的封装,例如glibc中的fopen最终会调用open系统调用。
Linux、macOS及多数Unix系统都遵循POSIX标准,因此用C语言调用open、read、write、stat等函数编写的程序可以在这些系统间保持较好的可移植性。
POSIX的rename(2)只能在同一文件系统内原子完成,跨挂载点会返回EXDEV;正确做法是退化为复制到目标临时文件+fsync+rename+删除源。
XNU的BSD子系统直接源自FreeBSD,提供了POSIX系统调用、进程模型和网络栈。
8月30日之后,macOS在技术上没有发生任何改变,POSIX兼容性、底层架构和命令行工具一切照旧。
macOS长期通过POSIX认证,其BSD衍生工具链和XNU内核提供了符合POSIX的接口,因此即便失去UNIX商标,它仍是一个POSIX兼容系统。
POSIX标准与UNIX商标认证是两套独立体系:前者是技术规范,后者是商业商标授权。
POSIX标准由IEEE制定,定义了一套操作系统必须提供的API、命令行工具和运行时行为,目标是让源码在不同系统间可移植。
如果一个进程组成为孤儿组且其中有成员处于停止状态,POSIX规定系统会向该组所有成员发送SIGHUP和SIGCONT。
还有 11 条时间轴事件
全部知识事实 (20)
struct dirent是POSIX标准中用于表示目录项的结构体,通常由readdir函数填充并返回,至少包含d_name(文件名)和d_ino(inode号)等成员。
50%待验证POSIX接口本质上是对系统调用的封装,例如glibc中的fopen最终会调用open系统调用。
50%待验证Linux、macOS及多数Unix系统都遵循POSIX标准,因此用C语言调用open、read、write、stat等函数编写的程序可以在这些系统间保持较好的可移植性。
50%待验证POSIX的rename(2)只能在同一文件系统内原子完成,跨挂载点会返回EXDEV;正确做法是退化为复制到目标临时文件+fsync+rename+删除源。
50%待验证XNU的BSD子系统直接源自FreeBSD,提供了POSIX系统调用、进程模型和网络栈。
50%待验证8月30日之后,macOS在技术上没有发生任何改变,POSIX兼容性、底层架构和命令行工具一切照旧。
50%待验证macOS长期通过POSIX认证,其BSD衍生工具链和XNU内核提供了符合POSIX的接口,因此即便失去UNIX商标,它仍是一个POSIX兼容系统。
50%待验证POSIX标准与UNIX商标认证是两套独立体系:前者是技术规范,后者是商业商标授权。
50%待验证POSIX标准由IEEE制定,定义了一套操作系统必须提供的API、命令行工具和运行时行为,目标是让源码在不同系统间可移植。
50%待验证如果一个进程组成为孤儿组且其中有成员处于停止状态,POSIX规定系统会向该组所有成员发送SIGHUP和SIGCONT。
50%待验证fsync是POSIX系统调用,强制将文件系统缓冲区数据刷写到物理存储,确保进程崩溃或断电时已写入字节不丢失。
50%待验证/dev/null 是 POSIX 标准规定的特殊设备文件,主设备号为 1、次设备号为 3,权限通常为 crw-rw-rw-。
50%待验证strtok、localtime等函数并非线程安全,POSIX另提供了_r版本。
50%待验证Wine(Wine Is Not an Emulator)诞生于1993年,是一套将 Windows API 调用重新实现为 POSIX 兼容调用的兼容层,而非虚拟机或模拟器
50%待验证basename 和 dirname 均来自 POSIX 标准,可在 Linux、macOS、BSD 等 Unix 系系统上使用
50%待验证nl 源自 Unix System V,在 POSIX 标准中有正式规范
50%待验证POSIX标准由IEEE制定,定义了操作系统应提供的一组标准API,且这些API全部以C语言接口的形式规范
50%待验证Haiku不兼容POSIX标准,采用完全独立的内核架构,遵循BeOS的原生API设计
50%待验证Haiku采用完全独立的内核架构,不兼容POSIX标准,而是遵循BeOS的原生API设计
50%待验证POSIX的fork()系统调用要求复制整个进程地址空间,在浏览器的安全沙箱中无法实现
50%