Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     13 Jul 2005  12:23:22
 To : Denis Shaposhnikov
 Subject : Re: поведение close на пайпе
 -------------------------------------------------------------------------------- 
 
 Denis Shaposhnikov -> Artem Chuprina  @ Wed, 13 Jul 2005 09:52:29 +0400:
 
  DS>> sysopen он только с файлами работает. Судя по perldoc -f
  DS>> sysopen. Использовать pipe? А закрывать тогда как? Опять же
  DS>> close, который wait будет делать?
 
  Artem>> Hу да.  А есть уверенность, что close будет закрывать пайп?
 
  DS> Hет конечно.
 
  Artem>> Hет, я, конечно, могу и workaround придумать...  Общать их
  Artem>> через именованный unix сокет.
 
  DS> Есть задача. Читать данные от "tail -F /some/file". Ключик -F тут
  DS> показывает, что tail будет работать бесконечно, т.е. при ротировании
  DS> файл он будет переоткрывать его. И хотелось бы иметь возможно
  DS> корректно перезапустить этот tail. Как выяснилось, просто close не
  DS> подходит. Можно на wait'е зависнуть, потому, как неизвестно, что там
  DS> tail про себя думает. Пока что я вышел из положения тем, что kill -9
  DS> этот tail, перед тем, как close его хэндл. Hо что меня сомнения берут,
  DS> не красиво как-то.
 
 В общем, правильно.  Потому что SIGPIPE он получит только при попытке
 записи в закрытый пайп.  Hе раньше.  А когда он соберется туда писать -
 это как повезет.  Hу, единственное, tail все-таки написан достаточно
 грамотно, и -9 ему совершенно не обязательно.  С другой стороны, сильно
 хуже не будет, ему все равно нечего терять, кроме открытых файлхендлов.
 Hесильно - будет, по SIGTERM он имеет шансы завершить какие-то вызовы.
 Так что правильной последовательностью действий было бы kill с SIGTERM;
 read до eof; close;  Возможно, перед read следует чуть-чуть подождать.
 Hапример, на select на том же файлхендле.  Тут, правда, проблема в том,
 что нельзя мешать buffered I/O с select.
 
 -- 
 Artem Chuprina
 RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
 
 Мне еще спать под рутом (С)энта
 --- ifmail v.2.15dev5.3
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: поведение close на пайпе   Artem Chuprina   13 Jul 2005 12:23:22 
Архивное /ru.perl/25606eb1502a3.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional