我正在尝试在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终端中生成新进程。
答案 0 :(得分:4)
使用Unix文件分隔符和/cygdrive/c/
虚拟驱动器:
system "/cygdrive/c/users/program.exe";
或
exec("/cygdrive/c/users/program.exe")
答案 1 :(得分: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 :(得分: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;