[Ruby] Re: [Ruby] IO.popen("cmd").readlines.grep(/str/) оставляет зомби

Sergei Olonichev olonichev at scnsoft.com
Fri Apr 25 10:16:39 MSD 2003


vic ismakaev wrote:

>22 Апрель 2003 21:56, vic ismakaev написал:
>  
>
>>22 Апрель 2003 21:50, Alexander Bokovoy написал:
>>    
>>
>>>On Tue, Apr 22, 2003 at 09:42:24PM +0600, vic ismakaev wrote:
>>>      
>>>
>>>>Приветствую!
>>>>Снова я с тупым вопросом.
>>>>Например,когда в цикле каждую секунду я пытаюсь выполнить оперцию вида
>>>>
>>>>ipt=IO::popen("iptables -nvL FORWARD").readlines.grep(/192.168.1.244/)
>>>>
>>>>то у меня катастрофически растет количство зомби-процессов.
>>>>С чем это может быть связано и что я делаю не так?
>>>>        
>>>>
>>>С тем, что IO#popen порождает IO-объект, который не уничтожается.
>>>Попробуйте вариант с блоком.
>>>      
>>>
>>Придется наверное.Хотя без него дюже красиво получается.
>>
>>Для IO есть методы close,но вот не соображу,куда мне его вызов поместить.
>>    
>>
>Переписал код таким макаром
>
>ipt=IO::popen("iptables -nvL FORWARD")
> ipt1=ipt.grep(/192.168.1.244/)
> ipt.close_read
>
>Вроде теперь не зомбится.
>  
>

1. А почему нельзя использовать стандартный grep? Зачем изобретать 
велосипеды?
2. Наверное вы хотели написать /192[.]168[.]1[.]244/ а не /192.168.1.244/ ?

ipt=IO::popen("iptables -nvL FORWARD | grep /192[.]168[.]1[.]244/")










More information about the Ruby mailing list