|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/25606eb1502a3.html, оценка из 5, голосов 10
|