gpt4 book ai didi

c - umount 不适用于 C 中的设备(但可以在终端中使用)

转载 作者:行者123 更新时间:2023-11-30 17:13:56 24 4
gpt4 key购买 nike

我正在尝试以编程方式卸载 USB 驱动器(设备 /dev/sdb1 )。如果我在 Linux 终端中运行 sudo umount /dev/sdb1有用。但是,如果我 gcc编译并运行以下 C 代码片段 sudo ,错误为 ERRNO 22 = EINVAL (Invalid argument) .

这是代码:

#include "unistd.h"
#include "sys/mount.h"
#include "errno.h"

int main()
{
int r = umount2("/dev/sdb1", MNT_FORCE);
if (r != 0) return errno;
else return 0;
}

这同样适用于 umount()MNT_FORCE不会改变任何东西。

如果我传递挂载点而不是设备,该函数就可以工作,但是 the documentation says it works with both 。我发现这种方式比阅读 /etc/mtab 更可靠获取挂载点并使用它。

Function: int umount2 (const char *file, int flags)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

umount2 unmounts a filesystem.

You can identify the filesystem to unmount either by the device special file that contains the filesystem or by the mount point. The effect is the same. Specify either as the string file.

出了什么问题?

最佳答案

给出你的挂载路径。它应该有效。

 int r = umount2("/your_mount_path", MNT_FORCE);

关于c - umount 不适用于 C 中的设备(但可以在终端中使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30547553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com