Heim >Backend-Entwicklung >Golang >Wie kann ich auf verschiedenen Betriebssystemen freien Speicherplatz in Go erhalten?

Wie kann ich auf verschiedenen Betriebssystemen freien Speicherplatz in Go erhalten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-31 16:59:10629Durchsuche

How Can I Get Free Disk Space in Go Across Different Operating Systems?

Freien Speicherplatz in Go auf mehreren Plattformen abrufen

In diesem Artikel untersuchen wir eine Lösung zum dynamischen Abrufen der freien und Gesamtgröße von ein Speichervolume mit Go, unabhängig vom Betriebssystem (Windows, Linux, Mac). Diese Lösung macht externe Befehle wie df -h oder manuelle Berechnungen überflüssig.

Für POSIX-basierte Systeme nutzen wir die Funktion sys.unix.Statfs, um auf die Statfs_t-Struktur zuzugreifen. Um beispielsweise den freien Speicherplatz für das aktuelle Arbeitsverzeichnis in Bytes zu erhalten:

import "golang.org/x/sys/unix"
import "os"

var stat unix.Statfs_t

wd, err := os.Getwd()

unix.Statfs(wd, &stat)

// Available blocks * size per block = available space in bytes
fmt.Println(stat.Bavail * uint64(stat.Bsize))

Im Fall von Windows verwenden wir den Systemaufruf-Ansatz. Hier ist ein aktualisiertes Beispiel mit dem neueren sys/windows-Paket:

import "golang.org/x/sys/windows"

var freeBytesAvailable uint64
var totalNumberOfBytes uint64
var totalNumberOfFreeBytes uint64

err := windows.GetDiskFreeSpaceEx(windows.StringToUTF16Ptr("C:"),
    &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes)

Zögern Sie nicht, diese Beispiele für eine breitere Nutzung in ein plattformübergreifendes Paket zu erweitern. Hinweise zur plattformübergreifenden Implementierung finden Sie in der Hilfedokumentation des Build-Tools.

Das obige ist der detaillierte Inhalt vonWie kann ich auf verschiedenen Betriebssystemen freien Speicherplatz in Go erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn