瀏覽代碼

完成judge测试

blumonilr 5 年之前
父節點
當前提交
64f579e441
共有 2 個文件被更改,包括 8 次插入8 次删除
  1. 3 3
      judge.py
  2. 5 5
      lorun/cext/limit.c

+ 3 - 3
judge.py

@@ -84,13 +84,13 @@ def judge(src_path, td_path, td_total, time_limit, memory_limit, language):
     elif language == 'java':
         if not compile_java(src_path):
             return {'result': RESULT_STR[7]}
-        args = ['java Main']
+        args = ['java', 'Main']
         src_file = 'Main.class'
     elif language == 'python':
         if not compile_python(src_path):
             return {'result': RESULT_STR[7]}
-        args = ['python main.py']
-        src_file = 'main.py'
+        args = ['python', 'main.py']
+        src_file = 'main.pyc'
     for i in range(td_total):
         in_path = os.path.join(td_path, '%d.in' % i)
         out_path = os.path.join(td_path, '%d.out' % i)

+ 5 - 5
lorun/cext/limit.c

@@ -25,7 +25,7 @@ const char *last_limit_err;
 int setResLimit(struct Runobj *runobj) {
 #define RAISE_EXIT(err) {last_limit_err = err;return -1;}
     struct rlimit rl;
-    /*struct itimerval p_realt;*/
+    struct itimerval p_realt;
 
     rl.rlim_cur = runobj->time_limit / 1000 + 1;
     if (runobj->time_limit % 1000 > 800) {
@@ -35,7 +35,7 @@ int setResLimit(struct Runobj *runobj) {
     if (setrlimit(RLIMIT_CPU, &rl))
         RAISE_EXIT("set RLIMIT_CPU failure");
 
-    rl.rlim_cur = runobj->memory_limit * 1024;
+    /*rl.rlim_cur = runobj->memory_limit * 1024;
     rl.rlim_max = rl.rlim_cur + 1024;
     if (setrlimit(RLIMIT_DATA, &rl))
         RAISE_EXIT("set RLIMIT_DATA failure");
@@ -43,19 +43,19 @@ int setResLimit(struct Runobj *runobj) {
     rl.rlim_cur = runobj->memory_limit * 1024 * 2;
     rl.rlim_max = rl.rlim_cur + 1024;
     if (setrlimit(RLIMIT_AS, &rl))
-        RAISE_EXIT("set RLIMIT_AS failure");
+        RAISE_EXIT("set RLIMIT_AS failure");*/
 
     rl.rlim_cur = 256 * 1024 * 1024;
     rl.rlim_max = rl.rlim_cur + 1024;
     if (setrlimit(RLIMIT_STACK, &rl))
         RAISE_EXIT("set RLIMIT_STACK failure");
 
-    /*
+
     p_realt.it_interval.tv_sec = runobj->time_limit / 1000 + 3;
     p_realt.it_interval.tv_usec = 0;
     p_realt.it_value = p_realt.it_interval;
     if (setitimer(ITIMER_REAL, &p_realt, (struct itimerval *) 0) == -1)
-        RAISE_EXIT("set ITIMER_REAL failure");*/
+        RAISE_EXIT("set ITIMER_REAL failure");
 
     return 0;
 }