Judge0返回空值,并提示无法创建box.c文件

后端开发 2026-07-11

我在本地使用Docker运行Judge0。API服务器启动正常,我可以访问 /submissions 端点。

然而,每当我提交代码时,响应在诸如 stdouttimememorystderr 等字段返回 null。代码执行似乎并未发生。

例如,我发送以下请求:

curl -X POST "http://localhost:2358/submissions?base64_encoded=false&wait=true" \
-H "Content-Type: application/json" \
-d '{
  "source_code": "console.log(1+1)",
  "language_id": 63
}'

我收到的响应看起来是这样的:

{
  "stdout": null,
  "time": null,
  "memory": null,
  "stderr": null,
  "token": "some-token"
}

当我查看工作进程日志时,我看到与文件创建相关的错误。日志显示无法创建名为 box.c 的文件。

因此,由于这个错误,程序不会执行,所有结果字段仍然是 null

我已经尝试过:

  • 重新启动所有Judge0 Docker容器
  • 重新构建Docker容器
  • 确认API服务器运行正确
  • 确认提交端点可访问

尽管如此,问题仍然存在。

可能是什么原因导致Judge0在执行期间无法创建 box.c 文件?这是否与Docker权限、工作进程配置或文件系统问题有关?

任何建议或解决方案将不胜感激。

解决方案

修复:为工作进程启用特权模式。

打开你的 docker-compose.yml 并在工作服务中添加 privileged: true

yaml

worker:
  image: judge0/judge0:latest
  privileged: true   # <-- add this
  ...

Then restart: the server
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章