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

本文关键字:外部 程序 Perl 脚本 暂停 | 更新日期: 2023-09-27 18:10:01

我在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 ");

然后没有运气与系统功能,我认为问题是,我的程序(写在c#)不返回一个值,所以我把它改为类似下面的东西,但perl脚本仍然继续后,它调用myprogram.exe

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

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

@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]直到其他程序退出才返回。