小编som*_*ody的帖子

Linux / Perl - 当进程被分叉时会发生什么?

我已经阅读了有关 fork 的内容,据我所知,该进程已被克隆,但是哪个进程?脚本本身还是启动脚本的进程?

例如:

我在我的机器上运行 rTorrent,当一个 Torrent 完成时,我有一个针对它运行的脚本。此脚本从 Web 获取数据,因此需要几秒钟才能完成。在此期间,我的 rtorrent 进程被冻结。所以我使用以下内容制作了脚本分支

my $pid = fork();
if ($pid) == 0) { blah blah blah; exit 0; }
Run Code Online (Sandbox Code Playgroud)

如果我从 CLI 运行这个脚本,它会在一秒钟内返回到 shell,同时它在后台运行,完全符合我的预期。然而,当我从 rTorrent 运行它时,它似乎比以前更慢。那么究竟是什么被分叉了呢?rtorrent 进程是否克隆了自己并且我的脚本在其中运行,还是我的脚本克隆了自己?我希望这是有道理的。

linux perl forking posix

5
推荐指数
1
解决办法
2129
查看次数

标签 统计

forking ×1

linux ×1

perl ×1

posix ×1