Путь выхода exec времени выполнения - PullRequest
1 голос
/ 06 марта 2011

Я пытаюсь запустить команду perl с исполняющей системой Java exec в linux / ubuntu / gnome.Команда генерирует PDF-файл, но сохраняет его в моей домашней папке.Есть ли способ, которым метод exec может установить путь вывода для выполняемых команд?Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 06 марта 2011

Метод exec просто запускает команду в операционной системе, поэтому вы захотите изменить команду, с которой вы работаете, exec больше, чем что-либо в «Java» как таковое.

Есть несколько возможностей:

  1. Изменить рабочий каталог вашей Java-программы..pdf сохраняется в вашем рабочем каталоге, потому что именно здесь запускается программа.

    К сожалению, изменить это значение не так просто после запуска программы.Однако, тривиально изменить до запуска программы;просто измените рабочий каталог перед запуском программы.

  2. Переместите файл в нужное место после того, как он был создан в вашем домашнем каталоге.

  3. Измените команду, чтобы она включала в себя целевое местоположение.Ваш Perl-скрипт может иметь опцию, которая позволит вам сохранить его вывод в определенном месте (обычно -o или --output).Используя это ваша программа изменится с:

     Runtime.exec("perl someprogram");
    

    на что-то вроде:

      Runtime.exec("perl someprogram -o /path/to/some.file")
    
  4. Вы можете использовать «перенаправление вывода», если естьнет возможности сделать это.

    Попробуйте что-то вроде приведенного ниже в качестве аргумента:

      Runtime.exec("perl someprogram > /path/to/some.file")
    

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

Хотя каждый подход имеет свои преимущества и недостатки, вероятно, лучше всего реализовать тот, который вы понимаете лучше всего;если вы не можете заставить одного работать, попробуйте другой.


Хороший бесплатный сетевой ресурс для обучения - Введение в Linux: практическое руководство .

В разделе 2.2 есть подробности о cd, которые вы можете использовать для 1..

В разделе 3.3, раздел 3 рассказывается о команде mv, которая будет полезна в 2..

Раздел 5.1 посвящен перенаправлению ввода / вывода.Знание о «перенаправлении вывода» и операторе > важны для 4..

Для 3. вам придется обратиться к документации используемой вами perl-программы.

1 голос
/ 06 марта 2011

Вы можете изменить скрипт Perl так, чтобы он принимал абсолютный путь для вывода.

Вы можете попытаться установить рабочий каталог, используя exec(java.lang.String[], java.lang.String[], java.io.File), где File - это каталог, из которого выполняется команда.

Если ничего не помогло, вы всегда можете скопировать сгенерированный файл из домашнего каталога в ваше окончательное местоположение.

...