2011-06-14 84 views
1

我正在处理偶尔会进入无限循环的子进程,并使用垃圾填充标准输出。我通常需要捕获标准输出,除了这些情况。处理溢出标准输出的子进程

discussion给出了一种限制子进程所需时间的方法,但问题在于,对于合理的超时,它可以在被杀死之前产生GB的输出。

有没有办法限制从过程中捕获的输出量?

回答

1

如果无法检测到洪水发生的时间,那么其他人可能无法检测到。既然你做了捕捉,你当然可以自由地限制你的捕捉,但是这需要你知道什么时候发生了循环。

也许你可以使用限速,如果“常规”速率低于垃圾邮件发生时观察到的速率?

1

您可以将子进程的stout连接到类似文件的对象,这会限制在调用Popen时它将传递给实际stdout的数据量。类文件对象可以是fifo或cStringIO

相关问题