这是我在我的一个应用程序中使用的函数:
#include <sys/mount.h>
void mount_sys() {
if (0 != mount("none", "/sys", "sysfs", 0, "")) {
printf("there is an error in mounting \n"); /* handle error */
}
}输出显示:
there is an error in mounting我如何获得更多关于它失败原因的信息?
操作系统: RHEL 6,64位
发布于 2014-05-03 18:00:34
除了printf,您还可以使用:
perror ("There is an error in mounting");在调用将错误写出到标准错误之后,如下所示:
There is an error in mounting: <some reason here>然后查阅mount的手册页
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:调用者没有所需的权限。
https://stackoverflow.com/questions/23442807
复制相似问题