检测Linux系统是否支持某系统调用

简介: check_syscall.zip 随内核版本的变化,会增加一些新的系统调用,但如果glibc没有跟上,则不能直接调用,这个时候可以自己包装一下。如果想知道内核是否支持某系统调用,先得知道它的系统调用ID号,下面代码即是用来检查是否支持epoll_create1: // 文件名: x.
img_e25d4fb2f8de1caf41a735ec53088516.pngcheck_syscall.zip
随内核版本的变化,会增加一些新的系统调用,但如果glibc没有跟上,则不能直接调用,这个时候可以自己包装一下。如果想知道内核是否支持某系统调用,先得知道它的系统调用ID号,下面代码即是用来检查是否支持epoll_create1:

  1. // 文件名: x.cpp
  2. // 编译: g++ -g -o x x.cpp
  3. #include errno.h>
  4. #include stdio.h>
  5. #include stdint.h>
  6. #include stdlib.h>
  7. #include string.h>
  8. #include unistd.h>

  9. #ifndef __NR_epoll_create1
  10. # if defined(__x86_64__)
  11. # define __NR_epoll_create1 291
  12. # elif defined(__i386__)
  13. # define __NR_epoll_create1 329
  14. # elif defined(__arm__)
  15. # define __NR_epoll_create1 (UV_SYSCALL_BASE + 357)
  16. # endif
  17. #endif /* __NR_epoll_create1 */

  18. // 2.6.27内核才支持epoll_create1
  19. // glibc2.9开始提供epoll_create1
  20. static inline int epoll_create1(int flags)
  21. {
  22.     return syscall(__NR_epoll_create1, flags);
  23. }

  24. int main()
  25. {
  26.     int efd = epoll_create1(0);
  27.     if (-1 == efd)
  28.     {
  29.         // 如果不支持,则会输出:epoll_create: Function not implemented
  30.         perror("epoll_create");
  31.         exit(1);
  32.     }

  33.     // 走到这里,表示支持该系统调用
  34.     printf("epoll_create1 supported\n");
  35.     return 0;
  36. }

相关头文件:
/usr/include/bits/syscall.h
/usr/include/asm/unistd.h
/usr/include/asm/unistd_32.h
/usr/include/asm/unistd_64.h
/usr/include/asm/unistd_x32.h

相关文章
|
23小时前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
4天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
2天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
2天前
|
Ubuntu Linux
Linux系统基本操作
Linux系统基本操作
12 7
|
3天前
|
监控 安全 Linux
使用NRPE和Nagios监控Linux系统资源的方法
通过遵循以上步骤,可以有效地使用NRPE和Nagios监控Linux系统资源,确保系统运行稳定,并及时响应任何潜在的问题。这种方法提供了高度的可定制性和灵活性,适用于从小型环境到大型分布式系统的各种监控需求。
13 2
|
3天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
4天前
|
Ubuntu Linux Shell
Linux系统密码忘记
【10月更文挑战第2天】在Linux系统中,若忘记密码,可以通过单用户模式或使用Live CD/USB来重置。对于Ubuntu系统,可通过GRUB引导菜单进入单用户模式,利用命令行重置密码;或使用Live CD/USB启动并挂载硬盘分区后修改密码文件。CentOS系统同样支持单用户模式重置密码,也可借助安装介质进入救援模式,挂载文件系统后进行密码重置。这些方法均能在忘记密码的情况下帮助恢复系统访问。
|
2天前
|
Linux
Linux常用命令包括
Linux常用命令包括
10 5
|
2天前
|
Linux
Linux命令
Linux命令
13 5
|
6天前
|
Linux Python Perl
Linux命令删除文件里的字符串
Linux命令删除文件里的字符串
18 7
下一篇
无影云桌面