最有效的方法是在脚本中频繁呼叫相同的可执行文件



作为我从事的项目的一部分,我们正在重复使用perl脚本,该脚本循环某些简单任务。问题来自以下事实:

  • 脚本称为简单的可执行文件(基本上是在注册表中读取),但在〜60Hz
  • 可执行文件在共享驱动器上
  • 它位于大的目录(〜1000个元素)

基本上,即使我用其完整路径调用可执行文件,它仍然会解析整个目录,每次称为它,都会淹没网络。

解决这个问题的最佳方法是什么?偏好是不更改系统体系结构(在共享驱动器上保持EXE),而不是用Reg.exe绕过它以在我们的EXE更改时保持兼容性。我也宁愿不要将perl脚本重写在其他方面,而是开放的。

有没有办法将EXE加载到过程内存中以重复执行?还是保留它?使用符号链接有什么要做的吗?

谢谢

尽管在没有有关您的环境和流程的信息的情况下很难提供工作解决方案,但我可以提出一些一般建议,以防有帮助。

我认为您在Windows下运行。在这种情况下,修改PERL代码以通过Win32 ::进程控制目标EXE进程可能会有所帮助。该模块允许在流程路径中创建,悬架,恢复和终止Windows进程。

从其元CPAN页面中的快速示例:

use Win32::Process;
use Win32;
sub ErrorReport{
    print Win32::FormatMessage( Win32::GetLastError() );
}
Win32::Process::Create($ProcessObj,
                       "C:\winnt\system32\notepad.exe",
                       "notepad temp.txt",
                       0,
                       NORMAL_PRIORITY_CLASS,
                       ".")|| die ErrorReport();
$ProcessObj->Suspend();
$ProcessObj->Resume();
$ProcessObj->Wait(INFINITE);

最新更新