2

我正在尝试在 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

3 回答 3

4

使用 Unix 文件分隔符和/cygdrive/c/虚拟驱动器:

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

或者

exec("/cygdrive/c/users/program.exe")
于 2013-11-04T17:11:16.650 回答
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")
于 2013-11-04T17:10:58.190 回答
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;
于 2013-11-04T17:36:26.787 回答