Как избежать необходимости ждать и закрывать какое-то программное обеспечение, управляемое из Perl? - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть папка с файлами скриптов.Когда я запускаю их, открывается программа, к которой они принадлежат, она выполняет некоторые действия и генерирует CSV-файл.Я написал некоторый код, который хочу запустить каждый файл сценария и создать набор файлов CSV, по одному для каждого сценария.

Что происходит следующим образом: когда выполняется мое приложение Perl, программное обеспечение запускается иПервый из сценариев запускается успешно (создается файл CSV).Однако на этом этапе приложение Perl ждет, пока я закрою программное обеспечение, прежде чем я продолжу.Это делает это для каждого сценария.Что я могу сделать, чтобы этого не случилось?

use strict;
use warnings;

use Cwd;
my $dir = cwd();

opendir(DIR, $dir);
my @files= grep(/\.acs$/,readdir(DIR));

$dir=~s/\//\\/g;
chdir $dir;
foreach (@files)
{
    print "$_\n";
    system ("$_")
}

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Ваш лучший выбор - попросить приложение закрыть себя после того, как оно сделано. например, команда cmd.exe имеет параметр / C, который делает именно это.

попробуйте запустить приложение с /? И посмотрите, не появится ли что-нибудь полезное.

если это не удастся, вы можете использовать Win32 :: Process для создания процесса, а затем уничтожить его после того, как убедитесь, что это сделано. см. документацию для этого.

1 голос
/ 03 февраля 2011

Я думаю, вы захотите выполнить fork, exec и waitpid - то есть настроить и запустить свой собственный процесс и дождаться его завершения самостоятельно.

http://larc.ee.nthu.edu.tw/~cthuang/courses/ee2320/12_process.html

Этоэто нелегко, но, к сожалению, вы делаете это на ОС, которая не поддерживает скрипты.Делая это под Linux или OS X, у вас не возникло бы подобных проблем.

Вам необходимо выяснить, доступны ли эти команды даже в Windows.Возможно, вам придется найти некоторые похожие вещи, доступные в Windows, если нет библиотеки совместимости с posix.

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