我正在开发一个基于Web的编译器。为此,我需要保存必须传递给文件中的源代码的输入,然后将生成的输出保存在文件中。我想限制输出的文件大小文件到最大值。 这是代码片段:
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dir + "/run.sh")));
out.write("cd \"" + dir +"\"\n");
out.write("chroot .\n");
out.write("./a.out < in.txt > out.txt");
out.close();
如何定义文件大小的上限?
答案 0 :(得分:0)
一种可能性是使用ulimit -f
来限制文件输出总量。
另一种可能性是通过dd bs=1 count=NNNNNN
顺便说一句,您不需要以这种方式运行shell脚本。你可以这样做:
exec(new String[]{
"/bin/sh", "-c",
"cd \"" + dir + "\" ; chroot . ; ./a.out < in.txt > out.txt"
});
但这并未解决“注入”安全问题。你真的,真的 需要来解决这个问题!