![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| mishnik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 6.3.2011 Репутация: нет Всего: 1 |
Что делает скрипт: читает из зипа нужный кусок и выходит из цикла чтения раньше, чтобы сэкономить время
P.S. :все происходит на продуктиве $showrev Release: 5.10 Kernel architecture: sun4u Application architecture: sparc Hardware provider: Sun_Microsystems Kernel version: SunOS 5.10 Generic_142900-09 ставить доплнительные модули perl я не могу (типа Archive::Zip,IO::Compress::Zip) Есть код на perl, который идеально проходит через perlclitic по Brutal (report all violation), но при выполнении perl pipe_quest.pl unable to close: unzip -c test.zip utp.live.stp.published.messages.txt at pipe_quest.pl line 29 формирует файл, который нужно, но выдает ошибку, как обработать эту ошибку правильно, чтобы ее не было? если close $FH; вообще не обрабатывать, то код не проходит по perlcritic да и это может вызвать утечку памяти, если файл большой (>10Gb) и закрыть пайп все-таки нужно будет, контролируя эту утечку.
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
Почему не может закрыть? Потому что на том конце еще не завершился процесс? Тогда завершить этот процесс принудительно через kill.
|
|||
|
||||
| mishnik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 6.3.2011 Репутация: нет Всего: 1 |
как-то через kill - некрасиво, он сам доожен завершиться по brokeen pipe,мне бы только хотелось понять как поймать этот $SIG{'PIPE'} и обработать его, чтобы все было под контролем |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
SIGPIPE вам не надо ловить он не в вашей программе происходит.
Ситуация такая: Вы закрываете канал. Анзипу приходит SIGPIPE и он завершается. Естественно завершается с ненулевым кодом возврата. В документации по close() сказано, что если подпроцесс завершается с ненулевым кодом, то close() возвратит ложное значение. Имеет смысл игнорировать значение, возврашаемое close в данном случае. |
|||
|
||||
| mishnik |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 6.3.2011 Репутация: нет Всего: 1 |
хотя это не совсем то, что мне хотелось, но получается так
пускай будет так, хотя и душа не лежит к этому решению |
||||
|
|||||
| mishnik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 6.3.2011 Репутация: нет Всего: 1 |
как говориться итоговый вариант - finish for today Pipe_quest.pl:
проходит perlcritic по brutal |
|||
|
||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |