go-judge/envexec/single.go

32 lines
689 B
Go

package envexec
import (
"context"
)
// Single defines the running instruction to run single
// exec in restricted within cgroup
type Single struct {
// Cmd defines Cmd running in parallel in multiple environments
Cmd *Cmd
}
// Run starts the cmd and returns exec results
func (s *Single) Run(ctx context.Context) (result Result, err error) {
// prepare files
fd, pipeToCollect, err := prepareCmdFd(s.Cmd, len(s.Cmd.Files))
if err != nil {
return result, err
}
result, err = runSingle(ctx, s.Cmd, fd, pipeToCollect)
if err != nil {
result.Status = StatusInternalError
result.Error = err.Error()
return result, err
}
// collect potential error
return result, err
}