【发布时间】:2010-12-14 21:14:45
【问题描述】:
我有一个运行的 Perl 脚本,它的作用就像一个服务,我用它做的一件事就是用它来生成其他进程。其中一些进程是可执行文件,一些是 perl 脚本。
有时我想在其中一些进程上设置处理器关联。我使用 SetProcessAffinityMask 来执行此操作,因为可执行文件一切都按预期工作。对于 perl 脚本,这样做会使我的 Perl 服务崩溃。我正在运行 activestate perl 5.8.8,我进行了一些谷歌搜索,发现one other thread 提到了与我所看到的类似的问题,并且该线程的共识似乎与 Perl 的编译方式有关。 有什么想法或建议吗?
我已将问题归结为我正在运行的实际 Perl。 ActiveState Perl 5.8.8 似乎与 SetProcessAffinityMask() 存在问题。我卸载了 5.8.8 并安装了 5.10.1,使用了完全相同的代码,一切都按预期工作。
我正在使用 Win32::Process:Create 并使用 Win32::Process:setAffinityMask
【问题讨论】:
-
您有机会为我们链接到这些线程吗?我会说答案是“重新安装或重新编译 Perl”.. :)
-
如何在 Perl 中生成新进程?您使用
fork()还是使用Win32::Process::Create之类的东西? -
(我已合并帐户并将后续问题编辑到问题中;您应该再次成为问题所有者)