The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Perl ненормально работает с командой sleep"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Perl ненормально работает с командой sleep"
Сообщение от Vovchik emailИскать по авторуВ закладки(ok) on 19-Июн-04, 12:34  (MSK)
Почему на шеле нормально sleep работает, а на перле непонятно как?
Может я чего не понимаю?

Вот это работает правильно:
--------------------------------------------------------
#!/bin/sh

m=10
s=0
while [ $m -ge 0 ]
do
    let s=$s-1
    if [ $s -lt 0 ]; then let s=59; let m=$m-1; fi
    if [ $s -lt 10 ]; then s1="0$s"; else s1=$s; fi
    if [ $m -lt 10 ]; then m1="0$m"; else m1=$m; fi
    echo -en "$m1:$s1\b\b\b\b\b"
    sleep 1
done
echo
--------------------------------------------------------

А вот это же на перле, ждет незнамо чего:
--------------------------------------------------------
#!/usr/bin/perl

$m=10; $s=0;
do {
    printf "d:d%s", $m, $s, "\b"x5;
    sleep 1;
    $s--;
    if ($s<0) { $m--; $s=59; }
} while (not $m<0);
printf "\n";
--------------------------------------------------------
Без слипа работает...

Похожая проблема у меня с процессами.
Вот, например:
--------------------------------------------------------
#!/usr/bin/perl

open (PING, "tcpdump |");
while (<PING>) {
    if (/(\d\d:\d\d:\d\d).\S*\s(\S*) > (\S*):/) {
        print "$1 - $2 > $3\n";
    }
}
--------------------------------------------------------
Выдает строки както порциями, и, если трафик небольшой, может выдать за раз данные за несколько секунд...
Выводит всё, но не вовремя...
Как сделать так, чтобы не было этих задержек с выводом...

Может где в настройках проблема?

У меня ASPLinux 7.3 и RH 7.2

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Perl ненормально работает с командой sleep"
Сообщение от alchie Искать по авторуВ закладки(??) on 21-Июн-04, 03:55  (MSK)
второй строкой в перловом скрипте  вставь  $|++;

виной всему - буферизация вывода

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Perl ненормально работает с командой sleep"
Сообщение от Vovchik emailИскать по авторуВ закладки(ok) on 21-Июн-04, 23:57  (MSK)
Да, действительно поставил $|++;
и всё заработало! Спасибо!

А в случае с tcpdump помогло не сразу.
Аказывается у tcpdump тоже буфиризация вывода,
и надо было запускать его с ключем -l.
Т.е.: open (PING, "tcpdump -l |");

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру