LINUX.ORG.RU

Сообщения kri

 

Почему не работает POSIX::RT::Semaphore

Форум — Development

#!/usr/local/bin/perl
use threads;
use threads::shared;
use POSIX::RT::Semaphore;

$sem = POSIX::RT::Semaphore->init(0, 0);

my $pid = fork;
if ( $pid == 0 )
  {
    $sem->wait;
    print "CODE2\n";
    exit;
  }

print "CODE1\n";
$sem->post;


Я вижу только CODE1
Почему в дочернем процессе блокировка остаётся после того как в родительском сделан post и значение увеличено на 1

Мне надо лишь чтобы CODE1 было выведено
раньше чем CODE2

kri
()

Пример испльзования семафоров в Perl

Форум — Development

Знает кто ссылку на пример использования
IPC семафоров
kri
()

Так когда же мне откроют доступ

Форум — Linux-org-ru

Наверное уже 2 недели назад запостил
вот это

http://www.linux.org.ru/profile/kri/view-message.jsp?msgid=835650

Наверное уже пора устранить недоразумение.

Сказал бы я вам, как я сейчас на lor хожу :))
 
kri
()

Вопрос про процессы зомби

Форум — Development

Вот вывод ps auxw

dima     21871  2.4  1.7 13588 9292 pts/26   S    16:16   0:04 perl ./Receiver --config_file=Receiver.cfg
dima     21876  0.0  0.0     0    0 pts/26   Z    16:17   0:00 [Receiver <defunct>]
dima     21885  0.0  0.0     0    0 pts/26   Z    16:18   0:00 [Receiver <defunct>]

Почему могут появляться процессы зомби?
Где почитать про это?
kri
()

Fork + reference в Perl

Форум — Development

Имеется хэш, где ключи - строки, а значения - ссылки на массивы строк.

Этот хэш - временный буффер, который 
необходимо сбрасывать в файл, на консоль, в
syslog и куда угодно ещё по прошествии 
заданного периода (60 сек).

Прога читает из сокета udp датаграммы и пишет некую инфу из них в этот хэш.

Операция одновременного сбрасывания буффера
в различные "устройства" достаточно длительная
и следовательно если делать её после 
прошествия 60 секунд, то часть датаграмм 
может потеряться.

Поэтому я хочу создавать новый процесс, в
котором и сбрасывать буфер, а одновременно 
с старом процессе будет работать первичный
сбор данных в буфер(!!!)

ВОПРОС:
После выполнения fork - как два процесса 
будут разделять память в которой хранится
хэш (помните про значения-ссылки в нём).

При чтении новой 60-ти секундной проции 
данных я предварительно обнуляю хэш.
Не получится ли так, что обнулив хэш в 
родителе, я автоматом обнулю его и в потомке
не успев ещё сбросить его в файлы???
 
kri
()

Хэш массивов (или ссылок на массивы) в PERL

Форум — Development

Есть задачка:
IP адресу хочу поставить в соответствие все
его символьные названия.
Т.е. например
127.0.0.1 --- localhost, my_comp, develop_st
и т. д.
Хочу сделать хэш, где ключи - IP адреса, а
значения - массивы имён(или ссылки на массивы 
имён)

Это естественно не работает:
%my_hash = ();
push $my_hash{"127.0.0.1"} "localhost";
push $my_hash{"127.0.0.1"} "my_comp";
push $my_hash{"127.0.0.1"} "develop_st";

Как сделать правильно?
kri
()

Вопрос про сокеты в перл (работа с Cisco Netflow)

Форум — Development

Вот кусочек кода
.
.
.
my $socket = IO::Socket::INET -> new (
PeerAddr  => '192.168.250.1',
LocalPort  => 9996,
Proto      =>'udp'
) or die "$!\n";

my $port = $socket -> peerport();
my $host = $socket -> peerhost();
my $host2 = $socket -> sockhost();
my $port2 = $socket -> sockport();

print "port = '$port' host = '$host'  port2 
= '$port2' host2 = '$host2' \n";

while (1)
{
  my $from = $socket -> recv (my $data, 8192, 0);
  if (length ($data) < 16) {
		warn ("Invalid packet length " . length ($data) .
			" received\n");
		next;
	}
  my ($version, $flows, $uptime, $secs, $usecs) = unpack ('nnNNN', $data);

  print "*************************************************\n";
  #my $len = length ($data);
  print("version = '$version'\n");
  print("flows = '$flows'\n");
  print("uptime = '$uptime'\n");
  print("secs = '$secs'\n");
  print("usecs = '$usecs'\n");
  print "*************************************************\n";
}
.
.
.

Есть Cisco 1700 - адрес 192.168.250.1
Порт данных 9996

Хочется читать данные 
Для этого создаю сокет
Обратите внимание на то, как создаётся 
сокет!!!
Я указываю PeerAddr И LocalPort(!)

И это работает, но я не понимаю как!
Ведь я просто создаю клиента и должен действовать по схеме

socket
connect
recv|send

На кой указывать LocalPort???
Если указать PeerPort 9996 - не работает!
В чём моя ошибка?
kri
()

Почему мне закрыли доступ???

Форум — Linux-org-ru

Сейчас я спокойно захожу на lor из дома

Однако уже почти неделю с работы я не могу зайти на lor (он даже не
пингуется).
Т.к. все остальные сайты работают можно предположить что мне закрыт
доступ по ip (217.15.21.170)

Так ли это??? Если да то почему закрыли и когда откроют!!!!
kri
()

Что ещё есть кроме Sendmail и Exim???

Форум — Admin

Желательно, чтобы фкнкциональность была на уровне!

kri
()

Как из двух регулярных выражений сделать одно (простой пример)

Форум — Development

Надо из строки удалить все "-" и ":" 
В два этапа это сделать элементарно!
А как записать в одну строчку? Наверное тоже очень просто!

#!/usr/local/bin/perl

$str = "2005-03-04_12:00";

$str =~ s/-//g;   # regex 1
$str =~ s/://g;   # regex 2

print $str . "\n";
kri
()

Проект на «чистом» C++

Форум — Development

Подскажите open source проект написанный на "чистом" C++ - т.е. имеется
ввиду достаточно простое консольное приложение (без всяких там 
графических фич).

Хотелось бы просто посмотреть код, как другие пишут. 
kri
()

Кто помнит, какое максимальное количество ответов на сообщение было за всю историю lor

Форум — Linux-org-ru

kri
()

По какому принципу участникам форума даётся статус (звёздочки)???

Форум — Linux-org-ru

kri
()

Вопрос про DNS : как получить список всех хостов из заданной зоны?

Форум — Admin

Вопрос про DNS : как получить список всех хостов из заданной зоны?

kri
()

Вопрос по bind 9 и проблеме с кэшированием

Форум — Admin

Вопрос по bind 9
Если сервер кэширующий то он хранит результаты запросов в памяти, не 
сбрасывая информацию на диск.
А если я перезапускаю named - весь кэш пропадёт???
Как сохранять его в файле???
kri
()

Обработка сигналов в PERL

Форум — Development

Как мне в perl программе обрабатывать все сигналы.
Пусть хотя бы на уровне записи в лог.
Например если случился SIGSEGV то писать в лог и корректно выходить! 
kri
()

Использование or и блока на PERL

Форум — Development

Простой пример
...
$sth->execute() or die;  # Работает
...

И простой контрпример

...
$sth->execute() or {logg("Error"); die;}  # НЕ Работает
...

Почему после or нельзя юзать блок операторов???


kri
()

Проблема с проверкой прав на запись в директорию

Форум — Development

На perl-е пишу скрипт.
Необходимо проверить могу ли я создать файл $my_file в append mode

Проверяю так:
Если (есть файл И в него нельзя писать) ИЛИ (нет файла И нельзя писать
в директорию) то выводим ошибку и выходим

Вот код:
if ( (-e $my_file and ! -w $my_file) or ( ! -e $my_file and ! -w `dirname $my_file`) )
 {
   print stderr "ERROR : permission denied\n";
   exit 5;
 }

Не работает! В директорию есть возможность записи и файла нет - всё
равно выдаёт ошибку!!!
В чём проблема???
kri
()

Сравнение строк БЕЗ учёта регистра в perl

Форум — Development

Мне необходимо чтобы 
hello == HeLlo
возвращало true

Есть ли способ сделать это стандартными средcтвами perl?
Если нет, то может модуль есть какой-нибудь?

kri
()

*.so --> *.a ЭТО ВОЗМОЖНО???

Форум — Development

kri
()

RSS подписка на новые темы