Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A light process isolation sandbox used for Competitive Programming contest

License

Notifications You must be signed in to change notification settings

CaCatHead/CatBox

Repository files navigation

CatJ

CI

A light process isolation sandbox used for Competitive Programming contest.

Features

  • cgroups: Record cpu and memory usage (may fall back to getrusage)
  • mount and chroot: Created an isolated file system
  • setrlimit: Set resource limits (cpu, address size, stack size, file size)
  • setuid and setgid: Run submission under another user and group
  • ptrace: Filter submission syscall

Note

To enable all of above features, it is highly recommended to use it under the root user, otherwise it may fall back automatically.

Installation

# Install using cargo
$ cargo install catj
# Or you can download binary with installation script
$ curl -fsSL https://bina.egoist.sh/CaCatHead/CatBox | sh
# Check installation
$ catj --version
catj 0.2.3
# Init cgroup for current user
$ ./init.sh $USER

Usage

# Compile C++ source code
$ catj compile ./fixtures/aplusb/source/ac.cpp -o a.out
# Run a.out
$ catj run --stdin ./fixtures/aplusb/testcases/1.in --read . -- ./a.out
2
# Generate report
$ catj --report run --stdin ./fixtures/aplusb/testcases/1.in --stdout ./sub.out --read . -- ./a.out
# or
$ catj -r run -i ./fixtures/aplusb/testcases/1.in -o ./sub.out -R . -- ./a.out
Status 0
Signal ✓
Time 1 ms
Time user 1 ms
Time sys 0 ms
Memory 0 KB

License

MIT License © 2023 XLor

About

A light process isolation sandbox used for Competitive Programming contest

Topics

Resources

License

Stars

Watchers

Forks

AltStyle によって変換されたページ (->オリジナル) /