The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
секция END в перл скриптах, !*! iliya, 19-Июн-08, 14:34  [смотреть все]
Добрый день, а не подскажите ли способ выхода из перл скрипта так, что бы не выполнялась секция END
нужно такой выход поставить в child ветку fork'a вместо exit'a
спасибо
  • секция END в перл скриптах, !*! angra, 15:04 , 19-Июн-08 (1)
    Сделайте exec или подайте себе извращенный сигнал :)

  • секция END в перл скриптах, !*! iliya, 14:55 , 20-Июн-08 (3)
    не будет больше предложений как завершить скрипт без выполнения END секции. вот, например, перл функция system не выполняет эту секцию, хотя внутри нее также происходит fork

    в общем и целом получается такая схема:
    есть процесс proc1.pl
    примерно следующего содержания:
    INIT {some actions}
    END {some actions}
    exit(main());
    sub main()
    {
    <actions>
    my_system("command for execute");
    <actions>
    }

    функция my_system написана мной, как замена для функции system(сделано по идейным соображениям и для некоторых полезностей, например, собрать output)
    в этой функции происходит следующее:
    sub my_system
    {
    <actions>
    $pid=fork;
    if($pid)
    {parent branch
      waitpid($pid,0);
    }
    elsif($pid==0)
    {child actions
      run3("command for execute");
      <proccessing>
      exit;
    }
    }

    происходит следующее, функцией my_system создается копия процесса proc1, из чилда запускается команда "command for execute", чилд процесс proc1 завершается по exit'y
    и, суть вопроса, из чилдового процесса запускается на выполнение секция END.
    вот собственно вопрос, как завершить чилд так, что бы не выполняласьэта END секция. совершенно определенно, что эта секция - грязь :( но убирать ее нельзя, по некоторым причинам :(
    сейчас как work around введен очень грязный солюшн послать самому себе kill, тоесть заменить exit на kill 9,$$. это не правильно. порекомендуйте пожалуйста другой способ завершения процесса. спасибо

  • секция END в перл скриптах, !*! iliya, 14:25 , 25-Июн-08 (6)
    спасибо всем откликнувшимся :)
    проблема решена:
    In addition to those methods already mentioned, POSIX::_exit() will not run END blocks.



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

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