2

我的问题如下:我有一个在嵌入式 Linux 系统中运行的 C++ 软件,该软件具有将一些数据导出到 pendrive 的功能,现在我的陷阱来了,一些用户试图使用旧的 pendrive 中的一键更改在读/写和只读模式之间。现在,我需要知道如何检查设备是否处于只读模式,以便在我的应用程序中向用户显示一些反馈。在挂载设备之前是否有系统调用来检查只读状态?

4

1 回答 1

4

处理这种情况的通常方法是尝试打开一个文件进行写入,然后检查errno == EACCES.

但是,如果您必须事先检查,那就是

int on_readonly_fs(char const *path)
{
    struct statvfs fsinfo;

    while (statvfs(path, &fsinfo)) == -1)
        if (errno != EINTR)
            return -1;
    return fsinfo.f_flag & ST_RDONLY;
}

但这仅安装设备后才有效。

于 2012-09-18T20:26:28.417 回答