mirror of
https://github.com/criyle/go-judge.git
synced 2025-09-26 22:39:12 +08:00
45 lines
962 B
Go
45 lines
962 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.StatusSignalled:
|
|
return StatusSignalled
|
|
case runner.StatusNonzeroExitStatus:
|
|
return StatusNonzeroExitStatus
|
|
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()
|
|
}
|
|
}
|