2013-11-04 216 views
1

我試圖在Cygwin中實現perl腳本。該腳本在內部進行了一些不同的調用。例如,如何使用Cygwin在perl腳本中運行系統命令

system "C:\\users\\program.exe"; 

exec("C:\\users\\program.exe"); 

當我嘗試在Cygwin中運行它,它給我的錯誤:

sh: C:cygwin64cygdriveprogram.exe: command not found 

我知道這是一個愚蠢的問題,而是如何我可以找到program.exe?如果我通過cygwin終端中的目錄,然後program.exe顯然是...

一旦我找到了程序,我想在新的cygwin終端中產生新的進程。

回答

4

使用UNIX文件分隔符和/cygdrive/c/虛擬驅動器:

system "/cygdrive/c/users/program.exe"; 

exec("/cygdrive/c/users/program.exe") 
2
exec("C:\\users\\program.exe"); 

執行的Bourne shell命令

C:\users\program.exe 

是編寫

C:usersprogram.exe 

執行下面的shell命令可能工作的一個奇怪的方式:

C:\\users\\program.exe   # exec("C:\\\\users\\\\program.exe"); 

但正確的路徑是

/cygdrive/c/users/program.exe # exec("/cygdrive/c/users/program.exe") 
2

TMTOWTDI:

#! /usr/bin/env perl 

use strict; 
use warnings; 

my @cmd = ("/c", "echo", "hi"); 

system('C:\\Windows\\System32\\cmd.exe',  @cmd) == 0 or die; 
system('C:/Windows/System32/cmd.exe',   @cmd) == 0 or die; 
system('/cygdrive/c/Windows/System32/cmd.exe', @cmd) == 0 or die; 

chomp(my $cmd = `cygpath 'C:\\Windows\\System32\\cmd.exe'`); 
system($cmd, @cmd) == 0 or die; 
相關問題