.github
cgotest
.gitignore
example_test.go
go.mod
go.sum
LICENSE
mksysconf.go
pathconf_linux.go
pathconf_test.go
pathconf_unix.go
pathconf_unsupported.go
pathconf.go
README.md
sysconf_bsd.go
sysconf_darwin.go
sysconf_defs_darwin.go
sysconf_defs_dragonfly.go
sysconf_defs_freebsd.go
sysconf_defs_linux.go
sysconf_defs_netbsd.go
sysconf_defs_openbsd.go
sysconf_defs_solaris.go
sysconf_dragonfly.go
sysconf_freebsd.go
sysconf_generic.go
sysconf_linux_test.go
sysconf_linux.go
sysconf_netbsd.go
sysconf_openbsd.go
sysconf_posix.go
sysconf_solaris.go
sysconf_test.go
sysconf_unsupported.go
sysconf_values_dragonfly.go
sysconf_values_freebsd.go
sysconf_values_linux.go
sysconf_values_netbsd.go
sysconf.go
zsysconf_defs_darwin.go
zsysconf_defs_dragonfly.go
zsysconf_defs_freebsd.go
zsysconf_defs_linux.go
zsysconf_defs_netbsd.go
zsysconf_defs_openbsd.go
zsysconf_defs_solaris.go
zsysconf_values_dragonfly_amd64.go
zsysconf_values_freebsd_386.go
zsysconf_values_freebsd_amd64.go
zsysconf_values_freebsd_arm.go
zsysconf_values_freebsd_arm64.go
zsysconf_values_freebsd_riscv64.go
zsysconf_values_linux_386.go
zsysconf_values_linux_amd64.go
zsysconf_values_linux_arm.go
zsysconf_values_linux_arm64.go
zsysconf_values_linux_loong64.go
zsysconf_values_linux_mips.go
zsysconf_values_linux_mips64.go
zsysconf_values_linux_mips64le.go
zsysconf_values_linux_mipsle.go
zsysconf_values_linux_ppc64.go
zsysconf_values_linux_ppc64le.go
zsysconf_values_linux_riscv64.go
zsysconf_values_linux_s390x.go
zsysconf_values_netbsd_386.go
zsysconf_values_netbsd_amd64.go
zsysconf_values_netbsd_arm.go
zsysconf_values_netbsd_arm64.go
go-sysconf
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)
}
}