linux - __NR_accept 的定义在哪里?

标签 linux sockets linux-kernel system-calls

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

最佳答案

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

但是,我怀疑您问的是 i386 或其他“旧”架构。在那种情况下,由于历史原因,实际上并没有 accept。系统调用——取而代之的是使用多路复用 socketcall 电话号码为 SYS_ACCEPT 的系统调用执行 accept() .您找到 __NR_socketcall 的定义在你的<asm/unistd.h> (以及 SYS_SOCKETSYS_BINDSYS_CONNECTSYS_LISTENSYS_ACCEPT 等的定义 <linux/net.h> 用于通过 socketcall 复用的各种与套接字相关的系统调用)。

无论如何,对于没有真正 accept 的架构系统调用,你当然也没有系统调用号__NR_accept .

关于linux - __NR_accept 的定义在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16053791/

相关文章:

c++ - ./配置错误: The test for linking against libxcb and support libraries failed

linux - linux中ps和ps -e命令有​​什么区别

mysqld_safe UNIX 套接字文件的目录 '/var/run/mysqld' 不存在

sockets - Perl 6 udp套接字: how to read response from server?

c - 是否可以将事件文件描述符与中断驱动输入结合使用?

linux - gitlab 8.2.0 git 不工作

Java P2P 网络,对不同的入站和出站连接使用相同的端口

c++ - 询问 <strike>root</strike> 密码以获得所需的权限

memory-management - 确定障碍物(栅栏)的使用位置

c - 从 exec 系统调用返回时使用 iret