无法访问打开的/arch/x86/syscalls/syscall_32.tbl

Mis*_*aig 5 system-calls linux-kernel

当我转移到内核后编写此命令时。当我编译它时,它没有显示任何列表。是否还有其他命令可以打开列表?

open /arch/x86/syscalls/syscall_32.tbl 
Run Code Online (Sandbox Code Playgroud)

Sam*_*nko 2

漏洞

/从文件路径中删除第一个字符(因为它应该是相对路径)。

检查文件

现在,使用工具检查该文件是否存在file

$ file arch/x86/syscalls/syscall_32.tbl
Run Code Online (Sandbox Code Playgroud)

打印文件

如果文件存在,您可以使用catless命令打印它。例如:

$ less arch/x86/syscalls/syscall_32.tbl
Run Code Online (Sandbox Code Playgroud)

您还可以在编辑器中打开此文件,例如使用vi命令。

如果文件不存在

该文件附带 Linux 内核源代码。它是通过此提交添加到内核 3.3 中的。所以你应该使用3.3或更高版本的内核来拥有这个文件。

如何使用syscall_32.tbl文件下载内核

通过Git从kernel.org下载普通主线内核源代码(使用此处的说明):

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ cd linux/
Run Code Online (Sandbox Code Playgroud)

现在您应该弄清楚要使用哪个版本。这取决于您的任务(您计划如何进一步使用该内核)。如果它打算在 PC Linux 发行版上使用,我建议选择最接近您的发行版内核的版本:

$ uname -a
Run Code Online (Sandbox Code Playgroud)

您可以通过发出下一个 Git 命令来查看所有可用版本:

$ git tag
Run Code Online (Sandbox Code Playgroud)

现在您可以切换到您选择的版本(在上面命令的输出中)。例如你可以切换到v3.3这样:

$ git checkout v3.3
Run Code Online (Sandbox Code Playgroud)

切换到3.3或更高版本,您的内核源代码将包含arch/x86/syscalls/syscall_32.tbl以下文件:

$ less arch/x86/syscalls/syscall_32.tbl
Run Code Online (Sandbox Code Playgroud)