mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
55 lines
696 B
Go
55 lines
696 B
Go
package linux
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func ReadMaxPID(path string) (uint64, error) {
|
|
|
|
b, err := ioutil.ReadFile(path)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
s := strings.TrimSpace(string(b))
|
|
|
|
i, err := strconv.ParseUint(s, 10, 64)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return i, nil
|
|
|
|
}
|
|
|
|
func ListPID(path string, max uint64) ([]uint64, error) {
|
|
|
|
l := make([]uint64, 0, 5)
|
|
|
|
for i := uint64(1); i <= max; i++ {
|
|
|
|
p := filepath.Join(path, strconv.FormatUint(i, 10))
|
|
|
|
s, err := os.Stat(p)
|
|
|
|
if err != nil && !os.IsNotExist(err) {
|
|
return nil, err
|
|
}
|
|
|
|
if err != nil || !s.IsDir() {
|
|
continue
|
|
}
|
|
|
|
l = append(l, i)
|
|
|
|
}
|
|
|
|
return l, nil
|
|
}
|