Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fork() 
:(
    Опции темы
Anarki
Дата 31.1.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



Код

#!/usr/bin/perl -w
use Data::Dump qw(dump);
use strict;

my %keywords;

sub cool {
    my $keywords = shift;
    $keywords->{'test'} = 'test2';
    return;
}

my $pid = fork();
unless ( defined $pid ) {
    die "error\n";
} else {
    if ($pid != 0) {
        # ничего не делаем
    } else {
        cool(\%keywords);
        exit;
    }
}
# убиваем дочерний если остался он
waitpid($pid,0);
warn("[Warning]Ostalsya docherniy process id $pid\n") unless (kill(TERM => $pid));


print dump (%keywords);


Вот, вообщем простенький код.
По идее в %keywords должен появляться элемент
и строка print dump (%keywords); выведет его нам.
однако хеш пустой оказывается. Хешу элемент не присваивается
В чём тут может быть проблема, сам не могу найти, еще почему то срабатывает
[Warning]Ostalsya docherniy process id $pid
smile smile



--------------------
PM WWW   Вверх
korob2001
Дата 1.2.2006, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Есть ещё чудный модуль, для вывода структуры:
Код

use Data::Dumper;
my %hash = ( one => "First",
             two => "Second",
             three => "Third" );
print Dumper( \%hash );

Но это так, в довесок. А вообще, убери exit.
Код

#!/usr/bin/perl -w
use Data::Dumper;
use strict;

my %keywords = ();

sub cool {
    my $keywords = shift;
    $keywords->{'test'} = 'test2';
}

my $pid = fork();
!defined $pid ? die "error\n" : cool(\%keywords) if $pid == 0;

# убиваем дочерний если остался он
waitpid($pid,0);
kill(TERM => $pid) or warn "Can't kill child, because: $!\n";
print Dumper( \%keywords );


Это сообщение отредактировал(а) korob2001 - 1.2.2006, 01:02


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Anarki
Дата 1.2.2006, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



Цитата(korob2001 @ 1.2.2006, 00:41)
Есть ещё чудный модуль, для вывода структуры:
Код

use Data::Dumper;
my %hash = ( one => "First",
             two => "Second",
             three => "Third" );
print Dumper( \%hash );

Но это так, в довесок. А вообще, убери exit.
Код

#!/usr/bin/perl -w
use Data::Dumper;
use strict;

my %keywords = ();

sub cool {
    my $keywords = shift;
    $keywords->{'test'} = 'test2';
}

my $pid = fork();
!defined $pid ? die "error\n" : cool(\%keywords) if $pid == 0;

# убиваем дочерний если остался он
waitpid($pid,0);
kill(TERM => $pid) or warn "Can't kill child, because: $!\n";
print Dumper( \%keywords );

Не совсем то, постоянно terminated выдаёт.



--------------------
PM WWW   Вверх
korob2001
Дата 1.2.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Я так понимаю ты хочешь убить дочерний процесс? Думаю сигнал kill нужно передавать дочернему процессу по условию:
Код

if ($pid > 0 ) { kill TERM => $pid };

т.е. перадавать kill из предка.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.