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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> убить порожденный процесс кнопкой cancel 
:(
    Опции темы
spin2
Дата 6.7.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 15.12.2005
Где: Москва-Одесса

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



Есть две кнопки - go и cancel. По кнопке go вызывается внешний скрипт:
Код

if (!defined ($pid = fork())) {    
        die "cannot fork: $!";    
    } elsif ($pid == 0) {    
        exec ($string);    
    } else {
        waitpid($pid, 0);
    }


Нужно сделать так, чтобы по кнопке Cancel тот внешний скрипт бы прерывал свою работу, то есть сделать kill дочернего процесса.
Делаю так:
Код

if (defined $pid) {     
        kill($pid);
    }

Переменная $pid глобальная.

Почему-то кнопка Cancel не отрабатывает. Что нужно исправить? 


--------------------
"С кем тяжело молчать, с тем не о чем говорить" (Метерлинк)
блог
Все об ICQ-ботах
PM MAIL WWW ICQ Skype Jabber   Вверх
sharq
Дата 9.7.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 2
Всего: 28



spin2, пробуй убить дочерний прочесс через вызов системной команды:
Код

`kill -9 $pid`


И проверь у тебя $pid точно есть!

 smile  


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
spin2
Дата 18.7.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 15.12.2005
Где: Москва-Одесса

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



Да, $pid есть... Стало ясно, что проблема в логике программы. Суть примерно такая: в обработчике Go вызывается внешний скрипт отдельным процессом, этот скрипт записывает результаты в файл. Если все ок, то нужно дождаться окончания этого процесса, а потом считать файл, обработать его и закинуть результат в div'ы.  И тут возникает противоречие: с  одной стороны, родитель должен ждать, пока ребенок закинет результат в файл. А с другой стороны - ему нужно иметь возможность убить ребенка при необходимости по Cancel. Поэтому я в затруднении. Может кто-нибудь что-то посоветовать? 


--------------------
"С кем тяжело молчать, с тем не о чем говорить" (Метерлинк)
блог
Все об ICQ-ботах
PM MAIL WWW ICQ Skype Jabber   Вверх
Nab
Дата 18.7.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 8
Всего: 37



AJAX или два фрейма... это самое простое, но конечно pid прийдется сохранять гдето в сессии или куках
А если все делать правильно..... то нельзя, и не рекомендуется. Это противоречит концепции протокола HTTP.
Нужно попробовать по другому организовать логику работы системы. 


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


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

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


 




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


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

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