package proc import ( "fmt" "github.com/pranshuparmar/witr/pkg/model" ) func ResolveAncestry(pid int) ([]model.Process, error) { var chain []model.Process seen := make(map[int]bool) current := pid for current > 0 { if seen[current] { break // loop protection } seen[current] = true p, err := ReadProcess(current) if err != nil { break } chain = append(chain, p) if p.PPID == 0 || p.PID == 1 { break } current = p.PPID } if len(chain) == 0 { return nil, fmt.Errorf("no process ancestry found") } // Reverse the chain to get root for i, j := 0, len(chain)-1; i < j; i, j = i+1, j-1 { chain[i], chain[j] = chain[j], chain[i] } return chain, nil }