Win32: процесс SetProcessAffinityMask вылетает мой Perl - PullRequest
0 голосов
/ 10 ноября 2009

У меня запущен Perl-скрипт, который действует как сервис, и я использую его для порождения других процессов. Некоторые из этих процессов являются исполняемыми файлами, а некоторые - сценариями Perl.

Иногда я хочу установить привязку процессора к некоторым из этих процессов. Я использую SetProcessAffinityMask для этого, для исполняемых файлов все работает как положено. При выполнении сценариев Perl мой сервис Perl вылетает. Я использую ActiveState Perl 5.8.8, я немного погуглил и обнаружил еще один поток , в котором упоминается аналогичная проблема относительно того, что я вижу, и консенсус этого потока, похоже, связан с тем, как Perl был скомпилирован. Есть идеи или предложения?


Я точно определил проблему до фактического Perl, который я использую. Похоже, что ActiveState Perl 5.8.8 имеет проблему с SetProcessAffinityMask (). Я удалил 5.8.8 и установил 5.10.1, использовал тот же самый точный код, и все работало как ожидалось.


Я использую Win32 :: Process: Создать и использовать Win32 :: Process: setAffinityMask

1 Ответ

0 голосов
/ 10 ноября 2009

То, что пример кода (это чей-то другой код, верно?), Это дерьмо - передача жестко закодированного идентификатора процесса в Win32::Process::Open почти наверняка завершится неудачей. Как вы используете методы из Win32::Process?

Также документ для Win32 :: Process примечания:

    $ProcessObj->SetProcessAffinityMask($processAffinityMask)
        Set the process affinity mask. <B>Only available on Windows NT.</B>

но это может означать, что документация устарела.

use strict;
use Win32::Process;
use Win32;
my $obj;
my $pid=2216;
my $iflags;
Win32::Process::Open($obj,$pid,$iflags) or die;
my $processAffinityMask;
my $systemAffinityMask;
$obj->GetProcessAffinityMask($processAffinityMask, $systemAffinityMask) or die;
$obj->SetProcessAffinityMask($processAffinityMask) or die;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...