linux环境下,Qt怎么检测USB的插入和拔出

linux环境下,Qt怎么检测USB的插入和拔出,第1张

Qt那一层是不会检测的,检测是在linux内核层,linux内核支持USB热插拔,然后在插入时,在/dev/目录下,会出现sda(或sdb,sdc等)的字样,可以做一个脚本自动挂载U盘,Qt可用于U盘挂载后的应用开发,比如U盘文件拷贝,修改等等

这样的做法效率有些低,现在通过一种特别类型的socket netlink实现获取U盘拔插的信息。netlink专门用于内核空间和用户空间的异步通信。

下面的例子能够监听内核的hotplug事件,源代码如下:#include#include#include#include#include#include#include#include#include#include

#define UEVENT_BUFFER_SIZE 2048

static int init_hotplug_sock(void)

int main(int argc, char* argv[]){

int hotplug_sock = init_hotplug_sock()while(1){

char buf[UEVENT_BUFFER_SIZE*2] = {0}

recv(hotplug_sock, &buf, sizeof(buf), 0)

printf(%s\n, buf)}return 0}

static int init_hotplug_sock(void){

struct sockaddr_nl snl


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8257211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存