如我所知,系统调用号的定义在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_CONNECT
,SYS_LISTEN
,SYS_ACCEPT
,<linux/net.h>
,socketcall
等等的定义)。
无论如何,对于没有真正的accept
系统调用的体系结构,您当然也没有系统调用编号__NR_accept
。