首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监视exe应用程序启动

监视exe应用程序启动
EN

Stack Overflow用户
提问于 2010-08-04 16:35:27
回答 1查看 132关注 0票数 2

我需要监控一个控制台exe应用程序,它没有来自用户的任何标准输入,它只打印一些信息到屏幕上,我使用POE:轮子来完成这项任务

下面是我的代码:

代码语言:javascript
复制
use POE qw( Wheel::Run);

    POE::Session->create(
      inline_states => {
         _start => sub {
            my ($heap) = $_[HEAP];

            my $run    = POE::Wheel::Run->new(
                Program      => "my_program.exe",
                StdoutEvent  => "print"
            );


            $heap->{run}  = $run   ;

         },

         print => sub {print "somthing";}
      }
    );
$poe_kernel->run(  );

当我运行上面的代码/脚本并运行my_program.exe时,我在屏幕上看不到任何打印,有人能告诉我这可能是什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2010-08-08 13:21:45

我的问题可能是什么

据我所知,有三个可能的候选人:

  1. my_program.exe已运行,但未生成output
  2. my_program.exe无法执行

程序不在路径中,权限错误,不是可执行文件,等等。

StderrEvent可能是捕获这种情况的最简单的方法,因为子进程将对行缓冲的输出失败进行warn()

"print"状态处理程序发出不带换行符的输出,当刷新输出缓冲区时,可能直到perl终止时才会出现换行符。但是,在从会话的HEAP中删除{run}轮子之前,您的脚本不会终止,您可以(也应该)在sig_child处理程序中执行此操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3403851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档