Skip to main content
 首页 » 编程设计

python之libsandbox 和 pysandbox 的受限功能

2025年05月04日12mengfanrong

我正在使用此处列出的 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 结果,要么,

  1. 静态链接目标程序以避免对共享库的依赖;或者,
  2. 扩展包装器脚本中的策略规则以处理相关的SYSCALL/SYSRET 事件;

免责声明:我是 libsandbox 的作者。