我使用此处列出的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
任何人都可以告诉我,我必须对包装器进行哪些更改才能使其正常工作?
答案 0 :(得分:1)
RF
结果代码很可能是由于文件操作的意外系统调用(即SYS_open()
,SYS_close()
,SYS_stat()
,... )。当(1)目标程序实际执行文件操作时,以及(或)(2)它是动态链接的并且需要在运行时加载.so
库时,会发生这种情况。由于您的目标程序不调用文件操作,因此它属于后一种情况。
然后,要解决RF
结果,
SYSCALL
/ SYSRET
事件; 免责声明:我是libsandbox
的作者。
答案 1 :(得分:0)
对于静态链接系统调用,我们使用ex 0,1,2 3-sys_read 1-sys_exit的系统调用代码,依此类推,直到链接了解系统调用列表的更多详细信息链接,代码为:http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html
我改变了这个:
= x86_64的集合([0,1,5,8,9,10,11,12,16,21,25,63,89,158,219,231])
为此:
= x86_64的集合([0,1,2,3,4,5,8,9,10,11,12,16,21,25,63,89,158,219,231,])
在sample2.py中,它可以正常工作
我的github存储库链接中提供了修改后的sample2.py: https://github.com/palashmaran/libsandbox.git