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