fixing merge conflict

This commit is contained in:
2021-11-16 03:03:25 -05:00
2 changed files with 96 additions and 0 deletions

View File

@@ -1,10 +1,16 @@
package sysutils
import (
`bytes`
`errors`
`fmt`
`io/ioutil`
`os`
`runtime`
`strconv`
`strings`
`r00t2.io/sysutils/paths`
)
/*
@@ -206,3 +212,53 @@ func getArrStr(s string) (a []string, ok bool) {
return
}
/*
GetEnvPid will only work on *NIX-like systems with procfs.
It gets the environment variables of a given process' PID.
*/
func GetEnvPid(pid uint32) (env map[string]string, err error) {
var envBytes []byte
var envArr [][]byte
var procPath string
var exists bool
env = make(map[string]string, 0)
procPath = fmt.Sprintf("/proc/%v/environ", pid)
if exists, err = paths.RealPathExists(&procPath); err != nil {
return
}
if !exists {
err = errors.New(fmt.Sprintf("information for pid %v does not exist", pid))
return
}
if envBytes, err = ioutil.ReadFile(procPath); err != nil {
return
}
envArr = bytes.Split(envBytes, []byte{0x0})
for _, b := range envArr {
// s := strings.TrimSpace(string(b))
s := string(b)
e := strings.SplitN(s, "=", 2)
for _, i := range e {
if len(i) != 2 {
env[string(i[0])] = ""
continue
}
env[string(i[0])] = string(i[1])
}
}
return
}