【发布时间】:2016-05-30 16:42:56
【问题描述】:
我正在尝试使用 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作为子进程调用?
标签: go system-calls mount