我正在使用此处列出的 sample2.py https://github.com/openjudge/sandbox作为调用沙箱库的包装器(又名。libsandbox && pysandbox)。
以下是我的C++代码
#include <stdio.h>
int main(){
return 0;
}
我运行 sample2.py 的结果是
result: RF
cpu: 2ms
mem: 288kB
谁能告诉我我必须对包装器做哪些更改才能使其正常工作?
请您参考如下方法:
RF 结果代码很可能是由于文件操作的意外 系统调用(即 SYS_open()、SYS_close() , SYS_stat(), ...)。当 (1) 目标程序实际执行文件操作,和(或)当 (2) 它是动态链接的并且需要在运行时加载 .so 库时,就会发生这种情况。由于您的目标程序不调用文件操作,因此属于后一种情况。
然后,要解决 RF 结果,要么,
- 静态链接目标程序以避免对共享库的依赖;或者,
- 扩展包装器脚本中的策略规则以处理相关的
SYSCALL/SYSRET事件;
免责声明:我是 libsandbox 的作者。
