gpt4 book ai didi

io - Golang 中的底层磁盘 I/O

转载 作者:IT王子 更新时间:2023-10-29 01:19:39 26 4
gpt4 key购买 nike

想知道是否有人尝试过低级磁盘 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")
}
}

这里是系统调用包文档的链接:http://golang.org/pkg/syscall/

根据这个页面,这个包试图与尽可能多的不同平台兼容,但在我的新手眼中似乎主要目标是 Linux API,当然,还有 go 惯用语来简化事情。我希望这能回答您的问题!

关于io - Golang 中的底层磁盘 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21032426/

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