每台机器的系统调用编号是否不同?这是否取决于处理器,我的意思是i586和i386会有区别吗?
如果每台机器的编号都不同,您如何找到您机器的编号?
一个常见的位置是 /usr/include/asm*,但该文件夹不存在。
答案1
在大多数操作系统上,数字位于/usr/include/sys/syscall.h
一般情况下可以打电话syscall(number, rest of parameters)
。
请注意,某些“系统调用”可能不在 syscalls.h 中,因为多个系统调用接口是由单个系统调用实现的,该系统调用使用子号码从一组调用中选择通话。
系统调用号仅对特定操作系统的特定版本有效。
在Solaris上,没有稳定的系统调用接口,但有libc之上的稳定接口。这完全符合 POSIX 要求,因为 POSIX 故意不区分系统调用和库函数。