gpt4 book ai didi

c - Ubuntu 中的 unistd_64.h

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:18 29 4
gpt4 key购买 nike

unistd_64 作为我的理解(有很多限制)包含系统调用号。当我从终端搜索文件时,它在不同目录下显示多个结果,如下所示:

  1. /usr/include/x86_64-linux-gnu/asm/unistd_64.h
  2. /usr/src/linux-headers-3.5.0-23/arch/sh/include/asm/unistd_64.h
  3. /usr/src/linux-headers-3.5.0-23-generic/arch/x86/include/generated/asm/.unistd_64.h.cmd
  4. /usr/src/linux-headers-3.5.0-23-generic/arch/x86/include/generated/asm/unistd_64.h

我不明白这些文件的区别和每个文件的用途。而3号文件有.cmd,是什么意思?

最佳答案

如果您正在编写需要知道系统调用号的普通 C 程序,则不应使用任何这些 header 。相反,您应该使用 <sys/syscall.h> .你的 C 程序不需要知道这个头文件的完整路径名; #include <sys/syscall.h>是所有必要的。但是,如果您想阅读它,可以在 /usr/include 中找到它。 , 可能是 /usr/include/sys/syscall.h/usr/include/x86_64-linux-gnu/sys/syscall.h .

现在,我将解释您找到的文件:

  • /usr/include/x86_64-linux-gnu/asm/unistd_64.h : 这是一个头文件,可由 sys/syscall.h 在内部使用.您可以阅读它,但不要将其直接包含在您的程序中。它可能定义了一大堆以 __NR_ 开头的名称.这些名称永远不应该在普通的“用户空间”程序中使用:始终使用以 SYS_ 开头的名称相反。

  • /usr/src/linux-headers-3.5.0-23/arch/sh/include/asm/unistd_64.h/usr/src/linux-headers-3.5.0-23-generic/arch/x86/include/generated/asm/unistd_64.h :这些是私有(private)内核头文件。它们的存在是为了人们试图构建与内核本身分开开发的内核模块。有可能其中之一在文本上与 /usr/include/x86_64-linux-gnu/asm/unistd_64 相同但这不是您应该依赖的东西。

  • /usr/src/linux-headers-3.5.0-23-generic/arch/x86/include/generated/ asm/.unistd_64.h.cmd : 这根本不是头文件,它被Linux内核的构建系统使用。

关于c - Ubuntu 中的 unistd_64.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468677/

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