#competitive-programming #sandbox #cli #process #isolation #cgroup #light

bin+lib catj

用于竞技编程比赛的轻量级进程隔离沙盒

11 个版本

0.2.3 2023 年 10 月 6 日
0.2.2 2023 年 10 月 6 日
0.2.0 2023 年 1 月 30 日
0.1.5 2023 年 1 月 27 日
0.0.0 2023 年 1 月 20 日

#1531命令行实用工具

30 每月下载量

MIT 许可证

81KB
2.5K SLoC

CatJ

CI

用于竞技编程比赛的轻量级进程隔离沙盒。

功能

  • cgroups: 记录 cpu 和内存使用情况(可能回退到 getrusage
  • mountchroot: 创建了一个隔离的文件系统
  • setrlimit: 设置资源限制(cpu、地址大小、堆栈大小、文件大小)
  • setuidsetgid: 以另一个用户和组的身份运行提交
  • ptrace: 过滤提交系统调用

注意

为了启用所有上述功能,强烈建议在 root 用户下使用,否则可能会自动回退。

安装

# 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

使用方法

# 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

许可证

MIT 许可证 © 2023 XLor

依赖关系

~8–19MB
~276K SLoC