catj

Crates.iocatj
lib.rscatj
version0.2.3
sourcesrc
created_at2023-01-20 18:02:18.35692
updated_at2023-10-06 16:16:09.057334
descriptionA light process isolation sandbox used for competitive programming contest
homepagehttps://github.com/CaCatHead/CatBox
repositoryhttps://github.com/CaCatHead/CatBox
max_upload_size
id763550
size122,503
XLor (yjl9903)

documentation

README

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

Commit count: 169

cargo fmt