Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
tklauser/go-sysconf: sysconf and pathconf for Go, without using cgo

tklauser/go-sysconf: sysconf and pathconf for Go, without using cgo

11 hours ago

go-sysconf

Go Reference</a> GitHub Action Status</a>

sysconf and pathconf for Go, without using cgo or external binaries (e.g. getconf).

Supported operating systems: Linux, macOS, DragonflyBSD, FreeBSD, NetBSD, OpenBSD, Solaris/Illumos.

All POSIX.1 and POSIX.2 variables are supported, see References for a complete list.

System-wide variables are available as SC_* constants and are queried using the Sysconf function.

Path-dependent variables are available as PC_* constants and queried using the Pathconf or Fpathconf functions.

Additionally, the following non-standard variables are supported on some operating systems:

| Variable | Supported on | |---|---| | SC_PHYS_PAGES | Linux, macOS, FreeBSD, NetBSD, OpenBSD, Solaris/Illumos | | SC_AVPHYS_PAGES | Linux, OpenBSD, Solaris/Illumos | | SC_NPROCESSORS_CONF | Linux, macOS, FreeBSD, NetBSD, OpenBSD, Solaris/Illumos | | SC_NPROCESSORS_ONLN | Linux, macOS, FreeBSD, NetBSD, OpenBSD, Solaris/Illumos | | SC_UIO_MAXIOV | Linux |

Usage

package main

import ( "fmt"

"github.com/tklauser/go-sysconf" )

func main() { // get clock ticks, this will return the same as C.sysconf(C._SC_CLK_TCK) clktck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) if err == nil { fmt.Printf("SC_CLK_TCK: %v\n", clktck) }

// get the maximum filename length for the root directory namemax, err := sysconf.Pathconf("/", sysconf.PC_NAME_MAX) if err == nil { fmt.Printf("PC_NAME_MAX: %v\n", namemax) } }

References

Chat with me