据我理解,unistd_64包含系统调用号(有很多限制)。当我从终端搜索文件时,它会在不同目录下显示多个结果如下:
我不明白这些文件和每个文件的使用之间的区别。文件号3有.cmd,这是什么意思?
发布于 2018-01-26 20:09:40
如果您正在编写一个需要知道系统调用号的普通C程序,则不应该使用任何这些头。相反,您应该使用<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_开头的名称。这些名称不应该在普通的"userspace“程序中使用:始终使用以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:它们是私有内核头。它们的存在是为了人们试图构建与内核本身分开开发的内核模块。其中之一可能在文本上与/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内核的构建系统使用。发布于 2018-01-26 20:04:10
驻留在/usr/include (系统包含目录)中的第一个文件是您要包含的文件。
其他的驻留在/usr/src中,这是一个不应该引用的源代码目录。
https://stackoverflow.com/questions/48468677
复制相似问题