【问题标题】:perl parent branch of fork behaving anomalouslyfork 的 perl 父分支行为异常
【发布时间】:2017-04-18 16:51:05
【问题描述】:

我在 fork 的父分支中有以下代码。也就是说,在 $pid = fork 的分支的一侧有一个非零的 $pid。我的问题是两个打印语句都为 $num_run 提供了相同的值,即零。两个打印都被执行,因此到达了 if 子句的内部。为什么 $num_run 没有增加?我确实意识到这似乎是不可能的。任何帮助将不胜感激。谢谢。

    print BATCHLOG "$$: 1 parent num_run is $num_run\n";
    if ($active_runs < $CORES) {
       push @active_pids, $pid;
       $num_rum = $num_run + 1;
       print BATCHLOG "$$: 2 parent num_run is $num_run\n";
       next;
    }

【问题讨论】:

  • 鉴于我们已经向 always use strictuse warnings 提供了数千次建议,令人惊讶的是,仍然有这么多人没有收到新闻' t 还没有达到。在任何情况下,增量运算符++ 在大多数语言中都可用(Lua 除外),而statememt $num_run = $num_run + 1 更安全、更清晰地写为++$num_run
  • @Borodin Python 没有 ++-- 供参考
  • @stevieb:没错,但你可以写num_run += 1,这一切都很好。在 Lua 中,你不得不说 num_run = num_run + 1 这增加了犯 OP 错误的机会。
  • @Borodin 是的,我知道 Python 中的 x += 1,但我没有意识到在 Lua 中它是如此不同。感谢您的澄清。

标签: perl fork


【解决方案1】:

总是use strictuse warnings

$num_rum 不是$num_run

【讨论】:

  • 你是怎么发现的? 看到你的答案后,我不得不重新阅读它三遍:)
  • 我知道它一定是这样愚蠢的——我想我应该搜索一下 num_run...谢谢!
  • 这是最好的答案,它将在审核队列中结束一段时间。 :-)
猜你喜欢
  • 2023-03-16
  • 2011-08-01
  • 2011-02-01
  • 2018-12-13
  • 2016-06-19
  • 1970-01-01
相关资源
最近更新 更多