func()

in providers/linux/process_linux.go [110:151]


func (p *process) Info() (types.ProcessInfo, error) {
	if p.info != nil {
		return *p.info, nil
	}

	stat, err := p.Stat()
	if err != nil {
		return types.ProcessInfo{}, fmt.Errorf("error fetching process stats: %w", err)
	}

	exe, err := p.Executable()
	if err != nil {
		return types.ProcessInfo{}, fmt.Errorf("error fetching process executable info: %w", err)
	}

	args, err := p.CmdLine()
	if err != nil {
		return types.ProcessInfo{}, fmt.Errorf("error fetching process cmdline: %w", err)
	}

	cwd, err := p.CWD()
	if err != nil {
		return types.ProcessInfo{}, fmt.Errorf("error fetching process CWD: %w", err)
	}

	bootTime, err := bootTime(p.fs.FS)
	if err != nil {
		return types.ProcessInfo{}, fmt.Errorf("error fetching boot time: %w", err)
	}

	p.info = &types.ProcessInfo{
		Name:      stat.Comm,
		PID:       p.PID(),
		PPID:      stat.PPID,
		CWD:       cwd,
		Exe:       exe,
		Args:      args,
		StartTime: bootTime.Add(ticksToDuration(stat.Starttime)),
	}

	return *p.info, nil
}