Como limitar um processo para usar a memória X e a hora T?

2

Acho que uma solução para esse problema é ulimit . Mas eu encontrei o seguinte código em domjudge, como eles estão lidando com isso alguém pode explicar.Eles não estão usando ulimit.Eu não sou bom em shell.Mas ainda sua pequena ajuda pode limpar minha dúvida.

# Runs command without error trapping and check exitcode
runcheck ()
{
set +e
$@
exitcode=$?
set -e
}

runcheck $GAINROOT $RUNGUARD ${DEBUG:+-v} ${USE_CHROOT:+-r "$PWD"} -u "$RUNUSER" \
-t $TIMELIMIT -m $MEMLIMIT -f $FILELIMIT -p $PROCLIMIT -c -o program.time -- \
$PREFIX/run $PREFIX/$PROGRAM \
testdata.in program.out program.err program.exit \
>error.tmp 2>&1

Executar script:

PROGRAM="";   shift
TESTIN="";    shift
OUTPUT="";    shift
ERROR="";     shift
EXITFILE="";  shift

Executa o programa ao redirecionar entrada, saída e stderr

$PROGRAM <$TESTIN >$OUTPUT 2>$ERROR
exitcode=$?

printf "$exitcode" >$EXITFILE

exit $exitcode
    
por user1766481 09.07.2016 / 22:01

1 resposta

0

O Ulimit funciona a partir do shell (que realmente chama a chamada do sistema ulimit ).

Em DOMjudge, as restrições são definidas usando o programa runguard . Se você quiser saber mais detalhes, veja o código fonte, ou pergunte na lista de discussão DOMjudge

    
por Jaap Eldering 28.07.2016 / 14:36