Ejemplo n.º 1
0
        /// <summary>
        /// 读取编译器进程的输出
        /// </summary>
        /// <param name="proc">进程</param>
        protected void ReadCompileResult(SandboxProcess proc)
        {
            var stdout = new StringBuilder();

            proc.Setup(128, 1000, 10);
            proc.Start(stdout, stdout);
            proc.WaitForExit(3000);

            if (!proc.HasExited)
            {
                StandardOutput = "Compile Timeout, may have some bad codes.";
            }
            else
            {
                StandardOutput = stdout.ToString().Trim();
                if (StandardOutput != "")
                {
                    Trace.WriteLine(StandardOutput);
                }
            }

            proc.Kill(6);
            proc.RefreshState(null);
            ExitCode = proc.ExitCode;
            Trace.WriteLine($"Compiler exited with status code {ExitCode}. ");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 创建编译器进程实例
        /// </summary>
        /// <param name="filename">编译器文件</param>
        /// <param name="arguments">编译器参数</param>
        /// <returns>进程实例</returns>
        protected SandboxProcess MakeProcess(string filename, string arguments = "")
        {
            Trace.WriteLine(filename + " " + arguments);
            var ret = SandboxProcess.Create(filename, arguments, true, true);

            ret.Setup(128, 5, 10);
            return(ret);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 创建评测进程
 /// </summary>
 /// <param name="filename">文件名称</param>
 /// <returns>评测进程</returns>
 public virtual SandboxProcess CreateJudgeProcess(string filename)
 {
     return(SandboxProcess.Create(filename + Appendix, stdin: true, cd: true));
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 设置测评进程的参数
 /// </summary>
 /// <param name="proc">测评进程</param>
 public virtual void SetJudgeEnv(SandboxProcess proc)
 {
 }