Merge pull request #1075 from scop/feat/improve-solaris-exe
[process][solaris] improve Exe portability
This commit is contained in:
commit
7ffa844cd5
|
@ -66,7 +66,11 @@ func (p *Process) TgidWithContext(ctx context.Context) (int32, error) {
|
|||
}
|
||||
|
||||
func (p *Process) ExeWithContext(ctx context.Context) (string, error) {
|
||||
return p.fillFromExecnameWithContext(ctx)
|
||||
exe, err := p.fillFromPathAOutWithContext(ctx)
|
||||
if os.IsNotExist(err) {
|
||||
exe, err = p.fillFromExecnameWithContext(ctx)
|
||||
}
|
||||
return exe, err
|
||||
}
|
||||
|
||||
func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) {
|
||||
|
@ -220,6 +224,16 @@ func (p *Process) fillFromPathCwdWithContext(ctx context.Context) (string, error
|
|||
return cwd, nil
|
||||
}
|
||||
|
||||
func (p *Process) fillFromPathAOutWithContext(ctx context.Context) (string, error) {
|
||||
pid := p.Pid
|
||||
cwdPath := common.HostProc(strconv.Itoa(int(pid)), "path", "a.out")
|
||||
exe, err := os.Readlink(cwdPath)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return exe, nil
|
||||
}
|
||||
|
||||
func (p *Process) fillFromExecnameWithContext(ctx context.Context) (string, error) {
|
||||
pid := p.Pid
|
||||
execNamePath := common.HostProc(strconv.Itoa(int(pid)), "execname")
|
||||
|
|
|
@ -66,7 +66,11 @@ func (p *Process) TgidWithContext(ctx context.Context) (int32, error) {
|
|||
}
|
||||
|
||||
func (p *Process) ExeWithContext(ctx context.Context) (string, error) {
|
||||
return p.fillFromExecnameWithContext(ctx)
|
||||
exe, err := p.fillFromPathAOutWithContext(ctx)
|
||||
if os.IsNotExist(err) {
|
||||
exe, err = p.fillFromExecnameWithContext(ctx)
|
||||
}
|
||||
return exe, err
|
||||
}
|
||||
|
||||
func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) {
|
||||
|
@ -216,6 +220,16 @@ func (p *Process) fillFromPathCwdWithContext(ctx context.Context) (string, error
|
|||
return cwd, nil
|
||||
}
|
||||
|
||||
func (p *Process) fillFromPathAOutWithContext(ctx context.Context) (string, error) {
|
||||
pid := p.Pid
|
||||
cwdPath := common.HostProc(strconv.Itoa(int(pid)), "path", "a.out")
|
||||
exe, err := os.Readlink(cwdPath)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return exe, nil
|
||||
}
|
||||
|
||||
func (p *Process) fillFromExecnameWithContext(ctx context.Context) (string, error) {
|
||||
pid := p.Pid
|
||||
execNamePath := common.HostProc(strconv.Itoa(int(pid)), "execname")
|
||||
|
|
Loading…
Reference in New Issue