ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

linux的U盘插拔监听

linux的U盘插拔监听 背景当设备被添加(如USB插入)、移除(如硬盘拔出)、状态变化(如电源事件)时,内核通过NETLINK_KOBJECT_UEVENT发送事件到用户空间。实现总入口函数int udisk_init(void) { pthread_t tid; //跟踪热插拔事件 if(pthread_create(tid, NULL, thread_hotplug_event_handler, NULL) != 0) { d_printf_err("Create thread_hotplug_event_handler err\n"); return -1; } return 0; }检测线程功能:先设置线程信息(log),分离线程。然后调用init_hotplug_sock得到套接字,并用fdopen将其转换为FILE*(fp),以便后续使用detect_udisk(fp),该函数可能从流中读取uevent消息。然后进入循环,只要系统运行状态(get_system_run_status())为真,就使用select等待套接字可读,超时1秒。如果可读,调用detect_udisk(fp)处理。最后关闭套接字。static void *thread_hotplug_event_handler(void *argv) { int hotplug_sock; FILE *
返回列表