簡體   English   中英

在Perl中禁止Windows cmd作為系統命令

[英]Suppress windows cmd for system command in Perl

我在Perl中使用系統命令來執行Java。 我形成了一個數組@args,它具有執行jar文件的不同選項。 如下所示:

$args[0] = $rootpath."/jre/bin/java";
$args[1] = " -jar \"".$rootpath."/temp/abc.jar\"";
$args[2] = " INP=\"".$inputfilename."\"";
$args[3] = " OUT=\"".$outputfilename."\"";
system(@args);

這在執行時提供了一個彈出窗口,我想隱藏該窗口並希望它在后台運行。 我也希望在Linux中也禁止這種情況。 我嘗試使用tild,但如下沒有幫助。

my $command = @args;
$output = `$command`;

請幫助解決這個問題。

使用javaw代替java

這很可能歸結為將第一行更改為

$args[0] = $rootpath."/jre/bin/javaw";

另請參見java.exe和javaw.exe之間的區別

我嘗試使用Win32 :: SetChildShowWindow(0),它運行完美。 我已經建立了Win32模塊並將Win32庫鏈接到我的應用程序。 在添加以下代碼之后,調用系統命令之前,不會顯示彈出命令提示符窗口。

Win32::SetChildShowWindow(0) 
if defined &Win32::SetChildShowWindow;

您還可以在此處關注有關此問題的討論: Perlmonks線程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM