go-judge/pkg/envexec/util.go
criyle 1f86f25995 Refactor & Documentation
- pkg/runner -> pkg/envexec
- add idea about executor server
2020-03-03 02:32:59 -05:00

48 lines
922 B
Go

package envexec
import (
"os"
"github.com/criyle/go-sandbox/runner"
)
func convertStatus(s runner.Status) Status {
switch s {
case runner.StatusNormal:
return StatusAccepted
case runner.StatusSignalled, runner.StatusNonzeroExitStatus:
return StatusRuntimeError
case runner.StatusMemoryLimitExceeded:
return StatusMemoryLimitExceeded
case runner.StatusTimeLimitExceeded:
return StatusTimeLimitExceeded
case runner.StatusOutputLimitExceeded:
return StatusOutputLimitExceeded
case runner.StatusDisallowedSyscall:
return StatusDangerousSyscall
default:
return StatusInternalError
}
}
func getFdArray(fd []*os.File) []uintptr {
r := make([]uintptr, 0, len(fd))
for _, f := range fd {
r = append(r, f.Fd())
}
return r
}
func closeFiles(files []*os.File) {
for _, f := range files {
f.Close()
}
}
func writeErrorC(errC chan error, err error) {
select {
case errC <- err:
default:
}
}