想知道是否有人在进行低级磁盘I/O方面的实验,例如读取原始扇区、MBR等。我已经自己进行了一些挖掘,但是没有找到任何相关信息。大部分都是死胡同,其中有人谈论Go的本地io
包。
如有线索,将不胜感激。
package main
import (
"syscall"
"fmt"
)
func main() {
disk := "/dev/sda"
var fd, numread int
var err error
fd, err = syscall.Open(disk, syscall.O_RDONLY, 0777)
if err != nil {
fmt.Print(err.Error(), "\n")
return
}
buffer := make([]byte, 10, 100)
numread, err = syscall.Read(fd, buffer)
if err != nil {
fmt.Print(err.Error(), "\n")
}
fmt.Printf("Numbytes read: %d\n", numread)
fmt.Printf("Buffer: %b\n", buffer)
err = syscall.Close(fd)
if err != nil {
fmt.Print(err.Error(), "\n")
}
}
syscall.Open
函数始终需要mode
参数作为必要参数。 - waynr看起来已经有点晚了,但对其他人可能还是很有趣的。这里有一个有趣的例子,展示如何在Windows上使用MBR: GoogleCloudPlatform/compute-image-tools
他们使用了golang.org/x/sys/windows包。
/dev/
文件对我来说也没问题,因为我在所有设备上都运行*NIX。我知道它们在Windows中不存在。 - Sly\\.\PhysicalDriveN
或\\.\X:
http://support.microsoft.com/kb/100027(您在我之前发布了) - Tema