设为首页 加入收藏

TOP

poll()函数的使用(二)
2014-11-23 23:11:40 来源: 作者: 【 】 浏览:6
Tags:poll 函数 使用
return ret;
}
devfs_mk_cdev(dev,S_IFCHR|S_IRUSR|S_IWUSR|S_IRGRP,DEVICE_NAME);
return 0;
}
void key_exit(void)
{
unregister_chrdev_region(dev,1);
cdev_del(p_cdev); //删除字符设备
devfs_remove(DEVICE_NAME);
printk("Device unregister!/n");
}
MODULE_LICENSE("GPL");
MODULE_AUTHOR("HJW");
module_init(key_init);
module_exit(key_exit);
---------------------------------------------------------------------------------------------------
测试程序代码:
#include
#include
#include
#include
#include
#include
#include /*文件控制*/
#include
#include /*时间方面的函数*/
#include /*有关错误方面的宏*/
#include //poll()
#include
#include //memset()
int main(void)
{
int fd,key_value,ret;
struct pollfd event; //创建一个struct pollfd结构体变量,存放文件描述符、要等待发生的事件
fd=open("/dev/key",O_RDWR);
if(fd<0){
perror("open /dev/key error!/n");
exit(1);
}
printf("open /dev/key sucessfully!/n");
while(1){ //poll结束后struct pollfd结构体变量的内容被全部清零,需要再次设置
memset(&event,0,sizeof(event)); //memst函数对对象的内容设置为同一值
event.fd=fd; //存放打开的文件描述符
event.events=POLLIN; //存放要等待发生的事件
ret=poll((struct pollfd *)&event,1,5000); //监测event,一个对象,等待5000毫秒后超时,-1为无限等待
//判断poll的返回值,负数是出错,0是设定的时间超时,整数表示等待的时间发生
if(ret<0){
printf("poll error!/n");
exit(1);
}
if(ret==0){
printf("Time out!/n");
continue;
}
if(event.revents&POLLERR){ //revents是由内核记录的实际发生的事件,events是进程等待的事件
printf("Device error!/n");
exit(1);
}
if(event.revents&POLLIN){
read(fd,&key_value,sizeof(key_value));
printf("Key value is '%d'/n",key_value);
}
}
close(fd);
return 0;
}
将上面的测试程序命名为polltest.c,进行编译;
将该源文件与 Android.mk 一块放于/android/package/apps/poll/下面,进行make
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := polltest
#LOCAL_MODULE := librdstest
LOCAL_SRC_FILES := polltest.c
LOCAL_LDLIBS := -llog -lm -lc
LOCAL_SHARED_LIBRARIES := liblog libcutils
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \
../includewww.2cto.com
#include $(BUILD_SHARED_LIBRARY) //编译可执行程序
include $(BUILD_EXECUTABLE)
生成polltest
然后将其放于目标设备上,运行:
在adb push polltest /polltest
chmod 777 /polltest
./polltest
即可以看见结果 。
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何使用C语言写: Generic Stack 下一篇C语言中的正则表达式

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: