首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >挂载sysfs时mount()失败

挂载sysfs时mount()失败
EN

Stack Overflow用户
提问于 2014-05-03 17:48:40
回答 1查看 582关注 0票数 0

这是我在我的一个应用程序中使用的函数:

代码语言:javascript
复制
  #include <sys/mount.h>

   void  mount_sys() {
    if (0 != mount("none", "/sys", "sysfs", 0, "")) {
     printf("there is an error in mounting \n");   /* handle error */
    }
}

输出显示:

代码语言:javascript
复制
there is an error in mounting

我如何获得更多关于它失败原因的信息?

操作系统: RHEL 6,64位

EN

回答 1

Stack Overflow用户

发布于 2014-05-03 18:00:34

除了printf,您还可以使用:

代码语言:javascript
复制
perror ("There is an error in mounting");

在调用将错误写出到标准错误之后,如下所示:

代码语言:javascript
复制
There is an error in mounting: <some reason here>

然后查阅mount的手册页

代码语言:javascript
复制
man 2 mount

它向您展示了(相当长的)可能性列表,例如:

EACCES:路径的某个组件不可搜索。(另请参阅path_resolution(7)。)或者,尝试装载只读文件系统而不给出MS_RDONLY标记。或者,数据块设备源位于使用MS_NODEV选项装载的文件系统上。

EBUSY:源已装入。或者,它不能以只读方式重新挂载,因为它仍然保留打开以进行写入的文件。或者,它不能挂载到目标上,因为目标仍然很忙(它是某个线程的工作目录、另一个设备的挂载点、有打开的文件等)。

EFAULT:其中一个指针参数指向用户地址空间之外。

EINVAL:源具有无效的超级块。或者,已尝试重新装载(MS_REMOUNT),但源尚未装载到目标上。或者,已尝试移动(MS_MOVE),但源不是装载点,或为'/‘。

ELOOP:在路径名解析过程中遇到太多链接。或者,试图移动,而目标是源的后代。

EMFILE:(如果不需要块设备:)虚拟设备表已满。

ENAMETOOLONG:A路径名比MAXPATHLEN长。

ENODEV:内核中未配置文件系统类型。

ENOENT:路径名为空或具有不存在的组件。

ENOMEM:内核无法分配可用页面来复制文件名或数据。

ENOTBLK:源不是块设备(需要设备)。

ENOTDIR:目标或源的前缀不是目录。

ENXIO:块设备源的主编号超出范围。

EPERM:调用者没有所需的权限。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23442807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档