【发布时间】:2019-12-04 09:08:44
【问题描述】:
我使用 perl 调用 system start,我需要指定我希望我的程序绑定到的 cpu 编号。
当我使用 x86 perl 时,它将启动 x86 cmd 来运行启动命令。这个 x86 start 不接受参数 0x100000000,因为它超过了 32 位长度。如果我使用 x64 perl,整个事情都可以正常工作,因为 x64 perl 启动 x64 cmd,它接受 0x100000000。
那么在使用 32 位 perl 时如何启动 x64 cmd 来运行 start 命令?
详情:
首先,我验证了 32 位 cmd shell 不接受 start /affinity 100000000 而 64 位 cmd shell 接受。在 32 位 cmd shell 中,它会抛出错误 The system cannot accept the START command parameter 100000000.
然后我分别尝试了x64 perl和x86 perl,发现x86 perl会得到同样的错误。请参阅下面的命令。
path/to/x64/perl.exe -e "system qq{start /b /wait /affinity 100000000 my.exe}"
path/to/x86/perl.exe -e "system qq{start /b /wait /affinity 100000000 my.exe}"
有没有什么方法可以使用 x86 perl 启动 x64 shell 来执行启动?
【问题讨论】:
-
我不熟悉 Windows,但this 有什么价值吗?或者使用像Win32::Process这样的模块?
-
@HåkonHægland 感谢您的链接,我使用 Process Explorer 检查了 cmd 图像类型(32 位或 64 位)是否与我的描述相符。我只能使用一行 perl,所以我不知道 win32::Process 是否可以工作。