Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 15 days 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 6 years ago)
- Default Branch: main
- Last Pushed: 2024-10-07T20:40:09.000Z (about 1 month ago)
- Last Synced: 2024-10-18T15:18:07.306Z (25 days 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: 289 KB
- Stars: 141
- Watchers: 5
- Forks: 27
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-sysconf
[![Go Reference](https://pkg.go.dev/badge/github.com/tklauser/go-sysconf.svg)](https://pkg.go.dev/github.com/tklauser/go-sysconf)
[![GitHub Action Status](https://github.com/tklauser/go-sysconf/workflows/Tests/badge.svg)](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 mainimport (
"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)