如我所知,系统调用号的定义在asm/unistd.h中采用__NR_xxxx的格式,但是我找不到__NR_accept的定义,为什么?

最佳答案

在许多体系结构上,接受系统调用号在<asm/unistd.h>中。

但是,我怀疑您是在询问i386或其他“较旧”的体系结构。在那种情况下,出于历史原因,实际上并没有accept系统调用,而是使用具有socketcall调用编号的多路 SYS_ACCEPT 系统调用来执行accept()。您会在__NR_socketcall中找到<asm/unistd.h>的定义(以及在SYS_SOCKET中针对通过SYS_BIND多路复用的与套接字相关的各种系统调用的SYS_CONNECTSYS_LISTENSYS_ACCEPT<linux/net.h>socketcall等等的定义)。

无论如何,对于没有真正的accept系统调用的体系结构,您当然也没有系统调用编号__NR_accept

10-08 13:57