POSIX XBD 基础定义与术语

共 56 题
#

1. POSIX Base Definitions 中 locale 与 character classes 的概念模型,LC_CTYPE 与 LC_COLLATE 的优先级如何设定?

A LC_CTYPE 优先级高于 LC_COLLATE,可覆盖其设置
B 各 LC_* 分类之间会互相覆盖,无法独立设置
C LC_COLLATE 优先级最高,决定字符分类
D LC_ALL 具有最高优先级,覆盖所有 LC_* 分类 ✓ 正确答案
#

2. POSIX 标准的 POSIX 选项(_POSIX_*_VERSION、_XOPEN_*)与 XSI 选项在编译期如何判断,缺失时的兼容写法是什么?

A feature test macro 可在任何头文件之后定义
B feature test macro 只影响运行期,不影响编译期
C 编译期用 `#if _POSIX_VERSION >= 200809L` 判断版本,缺失时用条件编译回退 ✓ 正确答案
D _XOPEN_SOURCE 与 _POSIX_C_SOURCE 完全等价,可任意互换
#

3. POSIX message catalogs(catgets)与 GNU gettext 的字符串外部化机制差异是什么?

A catgets 以原文字符串为键,gettext 以编号为键
B catgets 比 gettext 更新,功能更强大
C 两者都以 C 语言注释为键,机制完全相同
D gettext 以原文字符串为键,翻译缺失时回退原文,可维护性更好 ✓ 正确答案
#

4. POSIX wide character 与 multibyte character 之间的转换接口 mbrtowc、wcrtomb 状态机如何管理?

A 转换状态为 NULL 时使用静态状态,可安全跨线程使用
B 返回 (size_t)-2 表示输入不足,需保留状态继续读取 ✓ 正确答案
C 返回 (size_t)-1 表示转换成功并输出宽字符
D mbstate_t 只能用于 UTF-8,无法处理其他编码
#

5. 当跨语言处理正则时(如 PCRE、RE2、Python re)语义差异导致的安全漏洞(redos)的检测方法?

A 回溯式引擎对嵌套量词模式可能指数退化,可用超时或无回溯引擎(RE2)防护 ✓ 正确答案
B 所有正则引擎都保证线性匹配时间,不存在 ReDoS
C ReDoS 只与性能无关,只需限制输入长度即可完全避免
D 静态分析能 100% 识别所有 ReDoS 模式,无需运行时防护
#

6. POSIX blkcnt_t、fsblkcnt_t、fsfilcnt_t 在大文件系统(>2^32 块)下的溢出风险?

A 32 位 blkcnt_t 在块数超过 2^31 时可能溢出,应启用 `_FILE_OFFSET_BITS=64` ✓ 正确答案
B blkcnt_t 永远是 64 位,不存在溢出风险
C fsblkcnt_t 只用于统计文件数,与容量无关
D 溢出只影响显示,不影响内核实际写入
#

7. POSIX pthread_attr_t 在不同实现下的内存布局(glibc vs musl)为何导致跨平台二进制兼容性问题?

A pthread_attr_t 在所有 libc 中布局完全相同,可安全跨库传递
B 可以通过直接读取 pthread_attr_t 内部字段提高性能
C pthread_attr_t 是不透明类型,不同 libc 布局不同,应通过 init/get/set 函数访问 ✓ 正确答案
D 跨 libc 传递 pthread_attr_t 是安全的,因为标准规定其大小
#

8. __STRICT_ANSI__ 宏在 GCC 与 Clang 下限制扩展接口的范围,对嵌入式交叉编译的影响?

A 定义 __STRICT_ANSI__ 会启用更多 POSIX 扩展接口
B 嵌入式交叉编译必须使用严格 ANSI 模式,否则无法编译
C __STRICT_ANSI__ 只影响编译器内部优化,不影响头文件
D 严格 ANSI 模式(如 -std=c99)定义 __STRICT_ANSI__,会抑制 POSIX 扩展接口声明 ✓ 正确答案
#

9. POSIX fork、exec、wait、exit 四个接口族的语义约束,为何 sigaction 必须 POSIX 信号安全?

A 所有 POSIX 函数都可安全地在信号处理器中调用
B sigaction 等信号管理函数是 async-signal-safe,可在信号处理器中安全调用 ✓ 正确答案
C malloc 与 printf 在信号处理器中调用是安全的
D fork 后信号处置与父进程完全相同,执行会保留在子进程里被捕获的信号
#

10. POSIX sem_init、sem_open、sem_timedwait 的进程内 vs 跨进程行为,robust semaphore 的归属?

A sem_init 创建的信号量天然可跨进程共享,无需共享内存
B sem_init 的 pshared 参数与共享内存无关
C robust semaphore 用于取消持锁者,防止死锁
D sem_open 创建命名信号量,用于跨进程,sem_timedwait 超时返回 ETIMEDOUT ✓ 正确答案
#

11. POSIX spawn 接口(posix_spawn)相比 fork+exec 的可移植优势与功能差异?

A posix_spawn 比 fork+exec 复制更多内存,开销更大
B posix_spawn 将创建与替换合并为原子操作,适合无 MMU 环境,开销更低 ✓ 正确答案
C posix_spawn 无法指定文件描述符重定向
D posix_spawn 与 fork+exec 在功能上完全等价,无差异
#

12. POSIX timer_create / timer_settime 的回调线程与线程取消交互在 Linux 上的具体行为?

A SIGEV_THREAD 创建专用线程执行回调,回调线程可能被取消点取消,需用 pthread_cleanup 清理 ✓ 正确答案
B SIGEV_THREAD 的回调在信号处理器中执行,无需线程
C 回调线程永远无法被取消
D timer_create 只能发送信号,无法在线程中回调
#

13. POSIX link、unlink、rename、remove 在不同文件系统(跨设备)上的返回码语义?

A link 与 rename 跨设备都能正常完成,无需处理 EXDEV
B remove 只能删除文件,无法删除目录
C unlink 被打开的文件必然立即报错
D rename 在同文件系统内是原子的,跨设备返回 EXDEV,需回退 copy+unlink ✓ 正确答案
#

14. POSIX fstatvfs、statvfs 与 statfs 在不同系统下的字段兼容性如何诊断?

A statvfs 与 statfs 字段完全相同,可互换
B statvfs 是 POSIX 接口,f_frsize 表示实际最小块,f_bsize 用于计算基础块,跨平台应以 statvfs 为准 ✓ 正确答案
C statfs 的 f_bsize 永远等于 4096
D statvfs 的字段都是 32 位,无法表示大容量
#

15. fcntl 记录锁(F_SETLK/F_SETLKW)与 flock 在锁粒度、继承与 NFS 语义上有何差异?

A flock 可对文件字节区间加锁,粒度更细
B fcntl 锁与文件描述符绑定,关闭任一 fd 会释放该进程全部锁 ✓ 正确答案
C fcntl 锁可随 fork 继承给子进程
D flock 锁与进程绑定,与打开的文件描述无关
#

16. POSIX file lock(fcntl F_SETLK)与 NFS 文件锁协议在分布式文件系统下的局限性?

A NFS 文件锁在网络异常时能瞬时恢复,无一致性风险
B NFS 锁只与客户端绑定,与服务器无关
C NFS 文件锁与本地锁完全等价,可靠
D fcntl 锁在 NFS 上通过 NLM 协议实现,存在崩溃后锁失效/不清理、跨版本行为差异等局限 ✓ 正确答案
#

17. POSIX 路径解析中符号链接的跟随规则是什么,ELOOP 错误在何种条件下产生?

A 符号链接可以无限级联跟随,不会报错
B O_NOFOLLOW 会强制跟随符号链接
C 符号链接永远不跟随,直接使用链接内容
D ELOOP 在链接级联超过上限或形成循环时产生,O_NOFOLLOW 可阻止跟随最终成分 ✓ 正确答案
#

18. 路径中末尾斜杠(trailing slash)与点段(./..)在解析时如何处理,对符号链接有何影响?

A trailing slash 对符号链接没有任何影响
B .. 段永远被忽略,不影响解析
C 路径带末尾斜杠时,最终成分必须是目录,否则跟随链接报 ENOTDIR ✓ 正确答案
D 点段在符号链接解析中会被完全忽略
#

19. 绝对路径与相对路径解析在遇到符号链接指向绝对路径时如何继续,解析深度如何限制?

A 符号链接目标为相对路径时,相对当前工作目录解析
B 符号链接目标为绝对路径时,解析基准切换到根目录 ✓ 正确答案
C 符号链接跟随没有深度限制
D 相对路径从根目录开始解析
#

20. O_NOFOLLOW 与 O_PATH 标志如何改变路径解析与符号链接跟随行为?

A O_PATH 使 open 跟随所有符号链接
B O_NOFOLLOW 使 open 不跟随最终符号链接并返回 ELOOP,O_PATH 提供不真正打开文件的路径句柄 ✓ 正确答案
C O_NOFOLLOW 影响路径中的所有符号链接
D O_PATH 打开的文件可直接读写内容
#

21. realpath() 如何将含符号链接与点段的路径规范化,失败时的错误语义是什么?

A realpath 不做符号链接解析,只合并点段
B realpath 解析符号链接并消除点段,返回绝对规范路径,失败时返回 NULL 并置 errno ✓ 正确答案
C realpath 对不存在的路径也返回规范路径
D realpath 的缓冲区必须由调用者传 NULL,否则报错
#

22. POSIX XBD 中对 Process、Thread、Realtime Signal、Thread Cancellation 等术语的定义与 SUSv4 之间有何差异?

A Thread Cancellation 取消线程时无需清理
B XBD 与 SUSv4 完全无关,是两份独立标准
C Realtime Signal 与普通信号无区别,无需排队
D XBD 是 SUSv4 的基础卷,提供 Process/Thread/Realtime Signal 等术语定义,SUSv4 由多卷组成 ✓ 正确答案
#

23. POSIX 标准的 normative 与 informative 章节如何区分,实现一致性测试(VSX、CTS)依赖哪些 must/should/may 条款?

A should/may 条款是强制要求,必须严格满足
B must/shall 是强制要求,一致性测试(VSX、CTS)主要验证这些条款 ✓ 正确答案
C informative 章节也是必须遵守的规范
D 一致性测试验证所有条款,包括 should/may
#

24. POSIX 术语表中的 Race Condition、Async-Signal-Safety、Torn Read 在 XBD 中如何被定义,对代码实现的硬约束是什么?

A 竞态条件允许结果依赖执行顺序,无需处理
B 异步信号安全保证所有函数可在信号处理器中调用
C 撕裂读是正常的,不需要处理
D 信号处理器只能调用 async-signal-safe 函数,多字节共享数据需原子/对齐访问避免撕裂读 ✓ 正确答案
#

25. POSIX 1003.1-2017 与 1003.1-2008 在接口数量(均约 1200 个,2017 主要合并 2008 的技术勘误而非大规模扩充接口)与卷次拆分上的演进背景是什么?

A 1003.1-2017 相比 2008 大规模新增接口,数量翻倍
B 1003.1-2017 主要合并技术勘误,接口数量保持约 1200 个 ✓ 正确答案
C 1003.1-2008 与 2017 完全无关
D 1003.1-2017 删除了系统接口卷
#

26. POSIX 术语表中的 Robust Mutex 与 Priority Inheritance 在 Linux glibc 与 musl 实现上的差异是什么?

A Robust Mutex 只在单线程中有效
B glibc 与 musl 的锁实现完全相同,无差异
C Priority Inheritance 与内核调度无关
D Robust Mutex 与 Priority Inheritance 都依赖内核 futex/rt_mutex,glibc 与 musl 在封装与支持细节上存在差异 ✓ 正确答案
#

27. Configuration、Subprofiling、Option Group 在 SUSv4 中如何组合,与 autoconf 的 AC_CHECK_FUNC 关联有哪些?

A Option Group 定义可选功能集合,AC_CHECK_FUNC 探测函数符号,但需结合 sysconf 确认选项激活 ✓ 正确答案
B AC_CHECK_FUNC 能完全判断选项是否激活
C Subprofiling 与配置无关
D sysconf 只在编译期使用
#

28. POSIX 1003.1 选项的 ASN.1 编码与实现一致性声明(ICS、ISR)如何在测试套件中验证?

A 测试套件据 ICS 选择应测试的选项,验证声明与实际行为一致 ✓ 正确答案
B ICS 声明支持的选项无需测试
C ASN.1 编码与选项验证无关
D 测试套件会测试所有可能选项,忽略 ICS
#

29. POSIX Conformance 文档中 marked-up interface 与 shaded interface 的实现责任差异是什么?

A shaded interface 是必须实现的接口
B 两类标注含义完全相同
C marked-up interface 指明接口属于某一致性集合,shaded interface 表示可选,实现责任不同 ✓ 正确答案
D 标注只影响文档排版,不影响实现责任
#

30. POSIX locale 的 LC_ALL、LC_COLLATE、LC_CTYPE 优先级链与 setlocale 调用语义如何实现?

A LC_ALL 优先于各 LC_* 与 LANG,setlocale(cat, "") 按环境变量逐级选择 ✓ 正确答案
B LC_CTYPE 优先于 LC_ALL
C setlocale 设置只影响单线程
D LANG 优先于所有 LC_* 分类
#

31. POSIX 正则表达式(BRE/ERE)语法在 grep、sed、awk 中的差异,POSIX::regex 与 Perl 兼容模式如何取舍?

A grep 默认 BRE,awk 默认 ERE,BRE 中 ( ) 需转义为 \( \) 才表示分组 ✓ 正确答案
B grep 默认 ERE,sed 默认 ERE
C BRE 与 ERE 的元字符语义完全相同
D POSIX::regex 支持环视与命名分组
#

32. POSIX BRE 与 ERE 在元字符转义(\( \) vs ( ))上的差异对移植性的影响?

A BRE 中 ( ) 是字面字符,需转义为 \( \) 才表示分组;ERE 中直接有效 ✓ 正确答案
B 两者转义规则完全相同
C BRE 中 ( ) 直接表示分组
D 转义差异不影响正则移植性
#

33. POSIX 字符类 [:alpha:]、[:alnum:] 与 Unicode 类别下的等价与差异?

A [:alnum:] 只对应数字类别
B 两者完全等价,无差异
C [:alpha:] 通常对应 Unicode 字母类别,但受 locale 影响,二者是语义近似而非完全一致 ✓ 正确答案
D POSIX 字符类与 locale 无关
#

34. POSIX 系统数据类型(pid_t、size_t、ssize_t、off_t、mode_t)的宽度稳定性与 ABI 兼容性如何保证?

A pid_t 永远是 64 位
B off_t 等类型宽度受平台与 LFS 影响,ABI 兼容要求布局稳定,应避免硬编码宽度 ✓ 正确答案
C off_t 宽度与平台无关,永远是 32 位
D 类型宽度只影响编译期,不影响 ABI
#

35. POSIX clock_t 与 clockid_t 在不同实现下的取值范围,CLOCK_REALTIME 与 CLOCK_MONOTONIC 的语义差异?

A CLOCK_REALTIME 是墙上时钟,可被 NTP 调整;CLOCK_MONOTONIC 单调递增,测间隔更可靠 ✓ 正确答案
B CLOCK_MONOTONIC 可被用户任意设置
C clock_t 与 clockid_t 是完全相同的类型
D CLOCK_REALTIME 永不跳变
#

36. POSIX regex 在 NFA 与 DFA 引擎上的实现策略差异,对回溯与性能的影响?

A NFA 引擎保证线性匹配时间
B DFA 引擎支持反向引用
C NFA 基于回溯,支持捕获组但可能指数退化;DFA 线性匹配,无回溯但内存大 ✓ 正确答案
D POSIX 语义要求最短匹配,与引擎无关
#

37. POSIX locale 在容器镜像中的默认行为(POSIX/C/POSIX)与云厂商镜像的语言环境差异?

A 精简容器默认 C/POSIX locale,按 ASCII 处理,需显式设置并安装 locale 数据以支持 UTF-8 ✓ 正确答案
B 所有容器默认启用 UTF-8 locale
C C locale 完全支持 UTF-8 字符分类
D 云厂商镜像默认启用 en_US.UTF-8
#

38. 当 setlocale 失败时,应用是否回退到 C locale 还是用户预期 locale,如何做最小惊讶?

A 应检查返回值,失败时回退到 C locale 并记录警告,避免静默忽略 ✓ 正确答案
B 失败时应用应继续使用用户预期 locale,忽略错误
C setlocale 从不失败
D 失败回退到 C locale 不会改变任何行为
#

39. POSIX 中 REG_NOSUB、REG_EXTENDED、REG_ICASE 等 flag 在 C/POSIX 系统中的兼容性矩阵?

A REG_ICASE 与 locale 无关
B REG_NOSUB 与 REG_EXTENDED 语义完全相同
C 所有 flag 在任意实现中行为完全一致
D REG_EXTENDED 用 ERE、REG_ICASE 忽略大小写、REG_NOSUB 不取子串提升性能,但实现细节可能不同 ✓ 正确答案
#

40. POSIX regex 不可用时的回退实现代价,业务系统为何通常依赖 PCRE 或 RE2?

A POSIX regex 支持环视与命名分组
B POSIX regex 功能有限,PCRE 功能丰富、RE2 线性匹配抗 ReDoS,业务常依赖二者 ✓ 正确答案
C RE2 基于回溯,可能 ReDoS
D PCRE 保证线性匹配时间
#

41. POSIX sigset_t 与 sigaction 结构在 Linux 与 BSD 上的 ABI 兼容性如何测试?

A 直接访问 sigaction 内部字段是安全的
B 所有平台 sigaction 布局完全一致
C sigset_t 在所有平台大小相同
D Linux 与 BSD 的 sigaction 布局可能不同,应通过 API 访问并用 sizeof/offsetof 验证 ✓ 正确答案
#

42. POSIX 64-bit 接口(off_t、rlim_t)的 LFS(Large File Support)特性启用条件与 _FILE_OFFSET_BITS 关系?

A off_t 默认永远是 64 位
B _FILE_OFFSET_BITS 定义在头文件之后也生效
C 定义 _FILE_OFFSET_BITS=64 使 off_t 变 64 位,需在包含任何系统头文件前定义 ✓ 正确答案
D _LARGEFILE64_SOURCE 与 _FILE_OFFSET_BITS 无关
#

43. POSIX _POSIX_C_SOURCE、_XOPEN_SOURCE、_GNU_SOURCE 在 glibc 中的生效层级与覆盖接口范围?

A 这些宏可在任意位置定义,效果相同
B _POSIX_C_SOURCE 覆盖范围大于 _GNU_SOURCE
C _XOPEN_SOURCE 只启用 BSD 接口
D _GNU_SOURCE 包含 _POSIX_C_SOURCE 与 _XOPEN_SOURCE 的接口并扩展,覆盖范围最广 ✓ 正确答案
#

44. 当程序同时包含 POSIX 与 Windows SDK 头文件时(MinGW/MSYS),feature macro 的传播如何控制?

A 应用条件编译与头文件隔离,避免 POSIX 与 Windows 宏互相污染 ✓ 正确答案
B 两套头文件的宏互不影响,可任意混用
C _WIN32 宏在 POSIX 代码中总是安全
D feature macro 无法在 Windows 下传播
#

45. POSIX:200809 扩展在 glibc 中的 _POSIX_C_SOURCE=200809L 阈值与各接口启用矩阵?

A 该宏启用 POSIX 2008 接口(如 getline、strdup),glibc 用版本判断控制接口暴露 ✓ 正确答案
B 该宏禁用所有 POSIX 接口
C 接口启用只与编译器版本有关,与宏无关
D 200809L 用于启用 C 语言标准
#

46. POSIX realtime signals(SIGRTMIN..SIGRTMAX)在排队与优先级上的语义与 System V 信号差异?

A 实时信号数量无限
B 实时信号与 System V 信号完全相同
C 实时信号不排队,多个信号合并
D 实时信号支持排队、携带数据与优先级,而 System V 信号会合并且无数据 ✓ 正确答案
#

47. POSIX open、read、write、close 与 fopen、fread、fwrite 在缓冲策略与错误恢复上的差异?

A 系统调用自动缓冲,提升效率
B 两者缓冲策略完全相同
C stdio 无缓冲,与系统调用等价
D open/read/write 无缓冲直连内核,fopen/fread 带用户态缓冲,错误处理方式不同 ✓ 正确答案
#

48. POSIX directory stream 接口(opendir、readdir、closedir)相对 fdopendir 与 getdents 的取舍?

A fdopendir 无法与 openat 结合
B getdents 是 POSIX 标准接口
C readdir 不可跨平台
D opendir/readdir 可移植,fdopendir 支持 fd 操作,getdents 高性能但 Linux 专属 ✓ 正确答案
#

49. POSIX aio(POSIX 异步 I/O)接口在 Linux 上长期被标记为 broken 的原因与 io_uring 替代?

A io_uring 无法批量提交
B aio 在 Linux 上性能优于 io_uring
C aio 是内核原生异步接口,无限制
D aio 在 Linux 上基于线程池实现,存在开销与不完整问题,io_uring 提供真正的异步与批量提交 ✓ 正确答案
#

50. POSIX 对文件名可移植字符集的规定是什么,依赖其他字符为何损害跨平台可移植性?

A 任何字符都可跨平台移植
B POSIX 规定可移植字符集为 A-Z、a-z、0-9、点(.)、下划线(_)、连字符(-),依赖其他字符跨平台可能失败 ✓ 正确答案
C 中文文件名在所有文件系统上完全可移植
D 空格与特殊字符在 Unix 上无需转义
#

51. IEEE Std 1003.1 与 ISO/IEC 9945 在国际标准化与版权控制上的协作模式,实现者为何同时参考这两份文件?

A ISO 9945 与 POSIX 无关
B 两者是完全不同的标准
C 标准文本受版权保护,实现无法引用接口名
D 两者内容基本一致,由 IEEE/Open Group 制定、ISO/IEC 采纳,实现者可同时参考 ✓ 正确答案
#

52. BSD、SVID、XPG、UNIX 三个标准之间的关系及 SUSv4 统一后的兼容性矩阵如何查阅?

A BSD、SVID、XPG 分别描述不同 Unix 体系,SUSv4 统一为单一规范,兼容性经选项组标注 ✓ 正确答案
B 各标准完全独立,无交集
C SUSv4 与 XPG 无关
D 兼容性矩阵无法查阅
#

53. feature_test_macros(7) 文档为何要求 macro 必须先于任何系统头文件包含,未定义时的默认行为是什么?

A 宏必须在包含任何系统头文件前定义,否则头文件已按旧状态生成声明 ✓ 正确答案
B 宏可在任意位置定义,效果相同
C 未定义宏时 glibc 不暴露任何接口
D 头文件包含后宏仍可生效
#

54. _DEFAULT_SOURCE、_BSD_SOURCE、_SVID_SOURCE 在 glibc 2.19 后的合并与弃用时间线是什么?

A _DEFAULT_SOURCE 与 _BSD_SOURCE 完全无关
B _BSD_SOURCE 在 glibc 2.19 后仍是最新推荐
C glibc 2.19 引入 _DEFAULT_SOURCE 取代 _BSD_SOURCE/_SVID_SOURCE,后者被弃用 ✓ 正确答案
D glibc 2.19 引入 _SVID_SOURCE 作为默认
#

55. pthread_create / pthread_join / pthread_exit / pthread_cancel 的取消状态、类型与取消点的关联?

A pthread_join 不是取消点
B 默认异步取消,立即终止
C 默认延迟取消,取消在取消点生效,取消时执行 pthread_cleanup 清理函数 ✓ 正确答案
D 取消类型与取消状态无关
#

56. AT_FDCWD 与 *at() 系列函数(openat/fstatat 等)如何改变路径解析的基准目录并避免 TOCTOU?

A 相对路径总是相对 cwd,与 fd 无关
B AT_FDCWD 表示使用根目录
C *at() 函数只能处理绝对路径
D *at() 以目录 fd 为基准解析相对路径,AT_FDCWD 表示用 cwd,可避免 TOCTOU ✓ 正确答案