0

我正在开发一个基于 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();

如何定义文件大小的上限?

4

1 回答 1

0

一种可能性是用于ulimit -f限制总文件输出大小。

另一种可能性是将输出通过管道传输dd bs=1 count=NNNNNN


顺便说一句,您不需要以这种方式运行 shell 脚本。你可以这样做:

exec(new String[]{
     "/bin/sh", "-c", 
     "cd \"" + dir + "\" ; chroot . ; ./a.out < in.txt > out.txt"
});

但是,这并没有解决“注入”安全问题。你真的,真的 需要解决这个问题!!

于 2013-05-13T15:32:14.970 回答