我正在尝试使用syscall.Mount函数将USB闪存驱动器挂载并自动检测文件系统到某个文件夹。我通过内核的netlink套接字获取设备路径,并尝试将其挂载到/tmp/+devicename
,在我的实例中,/dev/sdd1
应该被挂载到/tmp/sdd1
以下是go程序中的代码行
if err := syscall.Mount(src, target, "auto", 0, "ro"); err != nil {
log.Printf("Mount(\"%s\", \"%s\", \"auto\", 0, \"ro\")\n",src,target)
log.Fatal(err)
}
输出:
main.go:47: Mount("/dev/sdd1", "/tmp/sdd1", "auto", 0, "ro")
main.go:48: no such device
我使用“sudo”以root权限运行应用程序,但似乎无法使用syscall软件包进行挂载。然而,在终端中键入
sudo mount /dev/sdd1 /tmp/sdd1
,则可以正常工作。这里的问题是什么?在使用系统调用时,设备路径是否有所不同?
感谢任何帮助。祝好!
mount
作为子进程调用吗? - BMiner