判题分两部分
1.其中judged为服务进程,d即daemon。负责轮询数据库,提取判题队列。当发现新任务时产生judge_client进程。
2.judge_client进程为实际判题程序,负责准备运行环境、数据,运行并监控目标程序的系统调用,采集运行指标,判断运行结果。
Judged流程
初始化:
1.创建子进程pid_judged,并设置为会话的领头进程(umask(0),close(0~2))
2.改变当前工作目录为“/home/judge”
3.将pid_judged写入文件“/home/judge/etc/judge.pid”,并且加入写锁(用来检查该服务进程是否已经在执行)
4.设置SIGQUIT,SIGKILL,SIGTERM来触发call_for_exit函数结束服务进程的执行
轮询: