我有一个沙盒程序,它使用 setrlimit() 来限制在其控制下运行的另一个程序的输出文件大小,我是这样运行的:
sandbox -max 2048 /usr/bin/mono --debug myprogram.exe <p1 >r1 2>r2
“-max 2048”开关告诉沙箱将输出限制为最大 2K 字节。
如果“myprogram.exe”内部发生异常,或者如果我故意从“myprogram.exe”内部向 stderr 写入一些内容,它会按预期出现在 r2 中。但是,当超过文件大小限制时,我收到此错误消息:
File size limit exceeded (core dumped)
但它并没有像预期的那样被写入错误日志 r2,而是出现在控制台上。谁能告诉我为什么会这样?有什么方法可以安排将此消息与其他所有内容一起写入 r2 吗?
最佳答案
这看起来像是 shell 而非程序会报告的错误。 shell 的 stdout/stderr 没有被重定向到任何地方。
关于linux - 某些 Linux 错误消息未被重定向到带有 2>x 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312767/