Perl 无法运行分叉,分叉了不需要的进程数
我对Perl中的Fork有一个问题。我想从一个脚本一次执行10个Fork进程,所有10个子(Fork)进程都将执行相同的操作(将文件从一个地方复制到另一个地方) 当我执行这段代码时,我的操作系统会挂起,当我实际检查是否有大量的进程同时分叉 这是我的密码:Perl 无法运行分叉,分叉了不需要的进程数,perl,fork,Perl,Fork,我对Perl中的Fork有一个问题。我想从一个脚本一次执行10个Fork进程,所有10个子(Fork)进程都将执行相同的操作(将文件从一个地方复制到另一个地方) 当我执行这段代码时,我的操作系统会挂起,当我实际检查是否有大量的进程同时分叉 这是我的密码: while ($callCount <= $totalCalls) { for (1..$TotalProcessToFork) { print "Call -> $callCount"; if
while ($callCount <= $totalCalls) {
for (1..$TotalProcessToFork) {
print "Call -> $callCount";
if($pid = fork) {
#in Parent Process
print " :: PID -> $pid\n";
push(@list_of_pid, $pid);
} else {
#in Child Process
`touch $callCount`;
}
$callCount++;
}
}
while($callCount子类也可以分叉。在子类中,您需要以某种方式退出循环。常见的模式是分叉和执行,或者您可以说last
子类也可以分叉。在子类中,您需要以某种方式退出循环。常见的模式是分叉和执行,或者您可以说last
之所以会发生这种情况,是因为当你分叉一个进程时,它会创建两个进程。让我们称它们为a1
和a2
。现在a1
是父进程,而a2
是子进程,因此当执行a2
时,它会创建b1
和b2
。当所有这些都被执行时,它们还会创建新的进程递归。这是因为当你分叉一个进程时,它会创建两个进程。让我们称它们为a1
和a2
。现在a1
是父进程,而a2
是子进程,因此当执行a2
时,它会创建b1
和b2
。当所有这些都被执行时,它们还会创建新的pro递归访问。你可能想看看,这可能会让你的生活更轻松
另外,不要使用外部Linuxtouch
命令;最好使用。您可能想看看,这可能会让您的生活更轻松
另外,不要使用外部Linuxtouch
命令;最好使用。好的,我将其修改为:“exec('touch',$callCount)或die$!”,但现在我的主程序在fork完成后退出。这个过程完成后还有更多操作要做,但我的主程序在这里退出。@user1065000,这是因为你从不等待孩子们结束。请参阅wait
和waitpid
。好的,我将其修改为:“exec('touch',$callCount)或die$!”,但现在我的主程序在fork完成后退出。此过程完成后还有更多操作要做,但我的主程序在这里退出。@user1065000,这是因为您从不等待您的孩子结束。请参阅wait
和waitpid
。Hemant Metalia,我注意到您的答案被否决。这很可能是因为他说你的措辞质量不好。我已经编辑了以改进它。-对于未来的答案,请使用正确的标点符号和正字法。花时间制定适当的句子来表达你想说的话,不要只是写下一连串的意识。谢谢你,达克西。对不起,我的英语不好,我下次会注意的。赫曼特·梅塔利亚,我注意到你的答案被否决了。这很可能是因为你的措辞质量不好。我已对其进行了编辑以改进。-对于未来的答案,请使用正确的标点符号和正字法。花时间制定适当的句子来表达你想说的话,不要只是写下一连串的意识。谢谢daxim sorr我的英语很差,下次我会注意的。