From c9df5a7aceaecd7d2f022a6ebccc7b8a9909059b Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 15 Feb 2024 22:52:11 -0600 Subject: start deprecating and modernizing this code --- proc.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 proc.go (limited to 'proc.go') diff --git a/proc.go b/proc.go new file mode 100644 index 0000000..d78fbcf --- /dev/null +++ b/proc.go @@ -0,0 +1,57 @@ +package shell + +import ( + "fmt" + "io/ioutil" + "strconv" + "strings" +) + +// get your parent PID +func GetPPID(pid int) (int, error) { + data, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/stat", pid)) + if err != nil { + return 0, err + } + + parts := strings.Fields(string(data)) + if len(parts) < 4 { + return 0, fmt.Errorf("unexpected format of /proc/%d/stat", pid) + } + + ppid, err := strconv.Atoi(parts[3]) + if err != nil { + return 0, err + } + + return ppid, nil +} + +// get comm from proc +func GetComm(pid int) (string, error) { + data, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/comm", pid)) + if err != nil { + return "", err + } + + return strings.TrimSpace(string(data)), nil +} + +/* +func main() { + pid := os.Getpid() + ppid, err := getPPID(pid) + if err != nil { + fmt.Println("Error getting PPID:", err) + return + } + + comm, err := getComm(ppid) + if err != nil { + fmt.Println("Error getting comm:", err) + return + } + + fmt.Println(comm) +} +*/ -- cgit v1.2.3