https://github.com/tklauser/go-sysconf
  
  
    sysconf for Go, without using cgo 
    https://github.com/tklauser/go-sysconf
  
bsd cgo getconf go golang linux posix sysconf sysconfig system-programming unix
        Last synced: 6 months ago 
        JSON representation
    
sysconf for Go, without using cgo
- Host: GitHub
 - URL: https://github.com/tklauser/go-sysconf
 - Owner: tklauser
 - License: bsd-3-clause
 - Created: 2018-09-25T14:07:03.000Z (about 7 years ago)
 - Default Branch: main
 - Last Pushed: 2025-05-09T07:33:23.000Z (6 months ago)
 - Last Synced: 2025-05-13T22:54:58.047Z (6 months ago)
 - Topics: bsd, cgo, getconf, go, golang, linux, posix, sysconf, sysconfig, system-programming, unix
 - Language: Go
 - Homepage: https://pkg.go.dev/github.com/tklauser/go-sysconf
 - Size: 315 KB
 - Stars: 144
 - Watchers: 4
 - Forks: 28
 - Open Issues: 1
 - 
            Metadata Files:
            
- Readme: README.md
 - License: LICENSE
 
 
Awesome Lists containing this project
README
          # go-sysconf
[](https://pkg.go.dev/github.com/tklauser/go-sysconf)
[](https://github.com/tklauser/go-sysconf/actions?query=workflow%3ATests)
`sysconf` 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](#references) for a complete list.
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
```Go
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)
	}
}
```
## References
* [POSIX documenation for `sysconf`](http://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html)
* [Linux manpage for `sysconf(3)`](http://man7.org/linux/man-pages/man3/sysconf.3.html)
* [glibc constants for `sysconf` parameters](https://www.gnu.org/software/libc/manual/html_node/Constants-for-Sysconf.html)