簡體   English   中英

golang在syscall.Mount中沒有這樣的設備

[英]golang no such device in syscall.Mount

我正在嘗試使用syscall.Mount函數來安裝USB PenDrive並將文件系統自動檢測到某個文件夾。 我從內核的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則工作正常。

這是什么問題? 使用系統調用時,設備路徑是否有所不同?

任何幫助表示贊賞。 干杯

您沒有指定操作系統,但我認為在許多實現中問題都是相同的。

Linux上, syscall.Mount只包裝mount(2) ,它本身不支持“自動” fstype的概念

mount(8) 命令"auto"的原因是因為它具有自己的魔力

如果未給出-t選項,或者如果指定了自動類型,則mount將嘗試猜測所需的類型。 掛載使用blkid庫來猜測文件系統類型 ; 如果沒有發現任何看起來熟悉的東西,mount將嘗試讀取文件/ etc / filesystems;如果不存在,則嘗試讀取/proc/filesystems

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM