gpt4 book ai didi

perl - 为什么 Perl 中的 waitpid 会返回错误的退出代码?

转载 作者:行者123 更新时间:2023-12-02 06:25:14 25 4
gpt4 key购买 nike

我从 waitpid 得到了错误的退出代码,我不知道为什么。有人可以给我一些想法吗?

这是我做的:

  1. 我用 open2 启动我的子进程
  2. 然后我用 waitpid 等待它完成
  3. 使用 $? 获取退出代码

无论我从子进程返回什么,它总是返回 -1。我用 VS 调试器检查我的程序返回的退出代码为 0。VS 是这样说的:

The program '[3256] Test.exe: Native' has exited with code 0 (0x0).

我确保 pids 匹配。

有什么想法吗?

最佳答案

我刚刚弄明白了。 waitpid 有 3 个阶段:

 1. process is running:    waitpid returns 0;   $? is -1
2. process is exiting: waitpid returns pid; $? is actual exit code
3. process doesn't exist: waitpid returns -1; $? is -1

所以当做 while(waitpid($pid, WNOHANG) >= 0) 之类的事情时,必须在此之前检索一次退出代码。

关于perl - 为什么 Perl 中的 waitpid 会返回错误的退出代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com