Невозможно запустить exe из другого каталога - PullRequest
0 голосов
/ 04 января 2012

Я пытаюсь перезагрузить программу после 20 часов выполнения, но я не могу запустить ее из другого места, кроме текущего каталога.

Например, если я звоню:

my @arglist = ('..\Server\taktpreviewserver\TaktPlayer2.exe', 'VLC_Player');

exec(@arglist) or die "Unable to relaunch TaktPlayer2.exe";

Это будет работать, но мне нужно получить доступ к некоторым вещам на ..\Server\taktpreviewserver\.

Итак, я сделал:

chdir('..\Server\taktpreviewserver');

my @arglist = ('TaktPlayer2.exe', 'VLC_Player');

exec(@arglist) or die "Unable to relaunch TaktPlayer2.exe";

Это не будет работать, если запущен с phpServer... (но работает нормально, если вызывается отдельно !!)

Что-нибудь нужно знать о chdir или запуске программы с сервера?

Ps: я нахожусь на Windows XP

Ответы [ 4 ]

1 голос
/ 04 января 2012

Если он запускается через веб-приложение, возможно, ваш путь не задан как текущий каталог . (возможная проблема безопасности), и в этом случае ваше первое решение с полным путем будет работать, но второе решение будет работать нет.

Возможное исправление - изменить 'TaktPlayer2.exe' на './TaktPlayer2.exe' или указать полный путь.

0 голосов
/ 05 января 2012

Хорошо, наконец, я решил изменить доступ к ресурсам в .exe, чтобы он мог работать в другом каталоге.

0 голосов
/ 04 января 2012

Попробуйте:

use FindBin qw($Bin);
# ...
my $path = "$Bin/../yadda/yadda";
chdir $path or die "Cannot chdir to $path: $!";
# ...
exec(@arglist) 
    or die "Unable to relaunch TaktPlayer2.exe (@arglist): $!";

$ FindBin :: Bin - это всегда каталог, в котором находится ваш скрипт. См. perldoc FindBin .

Также обратите внимание, что я включаю аргументы системного вызова и $! в сообщение die() / croak().Получается сэкономить время.

0 голосов
/ 04 января 2012

В зависимости от пользователя, от имени которого выполняется вызывающий сценарий, вызывающий сценарий может не иметь прав для запуска файла, который вы пытаетесь выполнить.Убедитесь, что у вас правильно настроены разрешения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...