检测Linux系统是否支持某系统调用
2015-09-07 09:48
477 查看
随内核版本的变化,会增加一些新的系统调用,但如果glibc没有跟上,则不能直接调用,这个时候可以自己包装一下。如果想知道内核是否支持某系统调用,先得知道它的系统调用ID号,下面代码即是用来检查是否支持epoll_create1:
// 文件名: x.cpp // 编译: g++ -g -o x x.cpp #include <errno.h> #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifndef __NR_epoll_create1 # if defined(__x86_64__) # define __NR_epoll_create1 291 # elif defined(__i386__) # define __NR_epoll_create1 329 # elif defined(__arm__) # define __NR_epoll_create1 (UV_SYSCALL_BASE + 357) # endif #endif /* __NR_epoll_create1 */ // 2.6.27内核才支持epoll_create1 // glibc2.9开始提供epoll_create1 static inline int epoll_create1(int flags) { return syscall(__NR_epoll_create1, flags); } int main() { int efd = epoll_create1(0); if (-1 == efd) { // 如果不支持,则会输出:epoll_create: Function not implemented perror("epoll_create"); exit(1); } // 走到这里,表示支持该系统调用 printf("epoll_create1 supported\n"); return 0; }
相关文章推荐
- centos 6.5 smb
- Linux命令(一)
- [Linux] - Virtualbox-CentOS动态增加分区空间方法
- Linux信号(signal) 机制分析
- Unix,Linux 添加用户
- 用U盘打造CentOS7和Windows7双系统
- CentOS学习5_为CentOS普通用户增加sudo操作权限
- Linux中Cron任务间隔执行:每隔几分钟/几小时/几天
- LINUX中编译程序时,-I,-L,-l 的区别
- 修改linux系统时间的方法(date命令)
- centos时间同步方法
- linux内核模块常见问题
- Linux / Unix Command: awk命令
- Linux / Unix Command: grep命令
- Linux / Unix Command: sed命令
- Linux / Unix Command: find命令
- linux删除历史操作命令
- Android - adb - Linux - 程序“adb”尚未安装
- linux 目录和文件管理命令
- Linux命令帮助的获取