We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
This project is not very complex, most code self-explain and do not need that much comment, so I would keep it short.
Follow judger.proto, mainly to provide ability to compile and execute untrusted code remotely.
judger.proto
Before understanding judger design, you need to understand a little more about sandbox.
You don't need to understand it fully, because we use a patched nsjail under hood.
nsjail
Organization is useful to quickly allocate the problem, with organization and trace, you can at least figure out where the program stuck.
To show how its organization, look at following diagram
Let's look at a case where you want to add support for cgroup v1.
The reason we cannot just use cgroup v1 with the help of cgroup-rs is because we need to write 1 into cgroup.kill file.
cgroup-rs
cgroup.kill
So we need alternative method to kill it, that method is killpg(), therefore we need to rearrange the chart to
killpg()
container--(depend)-->RunningProc--(associate)-->Limiter...
container
RunningProc
Therefore you know what part you can get started with!