HI Я пытаюсь выполнить код, разветвив дочерний процесс.
У меня есть ruby код a.rb, в котором я использую системный вызов
system ("perl ab c .pl -subroutine = 'a' -command = 'b '-status =' c '-logfile =' d '-start_datetime =' e '")
сейчас в ab c .pl я делаю это
my $pid = fork;
if (!$pid) {
print "[INFO] in the child process \n ";
print "[INFO] forking worked, child process id: ($$) \n";
while (1) {
if ( -d "$ENV{OUT_HOME}" ) {
print "[INFO] $ENV{OUT_HOME} is available now to write $seq \n";
open(my $FH,'>',"$ENV{OUT_HOME}/SEQ") or die "cannot open file to write $seq into $ENV{OUT_HOME}/SEQ";
print $FH "$seq";
close $FH;
print "[INFO] exiting from forked child process id: ($$) \n";
exit; # exit the while loop
}
else {
sleep (2);
}
}
} else {
print "[INFO] I am parent Process exiting from here \n";
exit;
}
Теперь с этим я пытаюсь получить дочерний процесс, который не зависит от родительского процесса (здесь это ab c .pl). Когда я запускаю сценарий, он выполняет системную команду, которая выполняет сценарий perl, и я вижу perl скрипт в дереве процессов. Но я продолжаю висеть там. Я не уверен, почему системная команда не завершается после завершения родительского? любые предложения или комментарии приветствуются.