не будет больше предложений как завершить скрипт без выполнения 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,$$. это не правильно. порекомендуйте пожалуйста другой способ завершения процесса. спасибо