gpt4 book ai didi

c - linux中/usr/include下的各种unistd.h有什么区别?

转载 作者:IT王子 更新时间:2023-10-29 00:11:22 24 4
gpt4 key购买 nike

在 Linux 的/usr/include 目录下我输入了命令:find -type f -name unistd.h 给出了以下输出:

./unistd.h./linux/unistd.h./asm-generic/unistd.h./bits/unistd.h./asm/unistd.h./sys/unistd.h

我的问题是,每个 unistd.h 的目的是什么,因为在单个 unix 规范中该文件只有一个定义?

提前致谢。

最佳答案

linux/unistd.h 实际上指向 asm/unistd.h,后者又指向 asm/unistd_32.hasm/unistd_64.h,这是根据系统架构定义和呈现给用户空间的系统调用号的地方。这些来自内核。

bits/unistd.h 是一个宏集合,它增强了 unistd.h(主要是帮助防止缓冲区溢出的东西),有条件地通过以下方式包含:

/* Define some macros helping to catch buffer overflows.  */
#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
# include <bits/unistd.h>
#endif

本质上,唯一需要的 POSIX header 实际上只是 unistd.h,其余的要么是扩展,要么是来自内核的定义。因此,您只需包含 unistd.h 即可,您需要的一切都将根据您的体系结构和您选择的构建选项被引入。

关于c - linux中/usr/include下的各种unistd.h有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com