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 每月下载量
81KB
2.5K SLoC
CatJ
用于竞技编程比赛的轻量级进程隔离沙盒。
功能
- cgroups: 记录 cpu 和内存使用情况(可能回退到 getrusage)
- mount 和 chroot: 创建了一个隔离的文件系统
- setrlimit: 设置资源限制(cpu、地址大小、堆栈大小、文件大小)
- setuid 和 setgid: 以另一个用户和组的身份运行提交
- 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