暂停Perl脚本,直到外部程序完成

时间:2014-06-24 13:12:39

标签: c# perl

我在C#中编码所以我不太了解perl,但我想运行下面的代码并让perl脚本等到myprogram.exe完成后再继续编写脚本。经过一番研究后,我发现perl中的系统函数应该在继续之前等待进程完成

    my $cmd = '\\\serverpath\Shared\myprogram.exe ';
    my $result = system("start /LOW $cmd pram1");

    my $cmd2 = '\\\serverpath\Shared\openPDF.pdf ';
    my $result2 = system("start /LOW $cmd2 ");

然后在系统函数没有运气之后,我认为问题是myprogram(用c#编写)没有返回值,所以我将其更改为类似下面的内容,但perl脚本仍然在继续它调用myprogram.exe

    static int Main(string[] args)
    {
        try
        {
            Run_Main();
            return 0;
        }
        catch (Exception)
        {              
            sendEmail();
            return 1;
        }           
    }

1 个答案:

答案 0 :(得分:1)

@Luk6e发现start在后​​台运行命令导致system不等待。不使用start启动命令:

my $cmd = '\\\serverpath\Shared\myprogram.exe ';
my $result = system("$cmd pram1");

my $cmd2 = '\\\serverpath\Shared\openPDF.pdf ';
my $result2 = system("$cmd2 ");

或传递/wait标志:

my $cmd = '\\\serverpath\Shared\myprogram.exe ';
my $result = system("start /wait /LOW $cmd pram1");

my $cmd2 = '\\\serverpath\Shared\openPDF.pdf ';
my $result2 = system("start /wait /LOW $cmd2 ");
  

/ w [ait]在其他程序退出之前不返回。