微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正确自动卸载笔式驱动器

如何解决正确自动卸载笔式驱动器

搜索了类似的帖子,但没有找到。我正在寻找一些建议或正确方向的观点,因为我找不到关于此主题的太多信息。

我正在尝试在从 buildroot 运行自定义 linux 构建的 raspBerry pi 4 上编写守护进程。守护进程使用 udev (libudev.h) 和 epoll (sys/epoll.h),检测新插入的笔式驱动器,创建目录并安装设备。它还检测所述设备的移除,卸载然后移除目录。

它运行良好,直到移除笔式驱动器,尽管正在执行卸载(没有任何错误返回),但当我重新插入笔式驱动器时,我总是收到此消息“FAT-fs(sda1)卷不是正确卸载。某些数据可能已损坏。请运行 fsck”。 我究竟做错了什么?如何正确卸载它?

 //pen removed
 if(!action.compare("remove") && !partition.compare("partition")){
    //if directory exists
    dir = opendir(path.c_str());
    if(dir){
       //close directory to be able to unmount
       close(dir);
       //unmount
       status = umount(path.c_str());
       if(status != 0)
           syslog(LOG_ERR,"%m\n");
       //remove the directory
       status = rmdir(path.c_str());
       if(status != 0)
           syslog(LOG_ERR,"%m\n");
       }
}
//pen inserted
else if(!action.compare("add") && !partition.compare("partition")){
    //if directory doesn't exist
    dir = opendir(path.c_str());
    if(!dir){
        //create the directory 
        status = mkdir(path.c_str(),777); 
        if(status != 0)
           syslog(LOG_ERR,"%m\n");
        }
        //mount 
        status = mount(devicenode.c_str(),path.c_str(),"vfat",MS_NOATIME,NULL);
        if(status != 0)
           syslog(LOG_ERR,"%m\n");
        }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。