Есть ли какой-нибудь удаленный кроссплатформенный способ выполнения внешнего процесса? - PullRequest
0 голосов
/ 20 декабря 2010

Я искал совет о том, как выполнить процесс, который является несколько кроссплатформенным.

Я написал реализации моего приложения на Java и Ruby, но это не столько проблема для конкретного языка, сколько платформа.специфическая проблема.

EG в Ubuntu / usr / bin / ищет все, что я делаю

# Ruby

`HandBrakeCLI #{args}` # works on Ubuntu and likely other linux distros since HandBrakeCLI is in /usr/bin/

Для окон он будет искать текущий каталог, в котором я работаю. Однако, если скопироватьИсполняемый файл Windows с текущим каталогом ошибка компоновки во время выполнения приведет к его аварийному завершению (DLL отсутствует)

Путь установки по умолчанию для HandBrakeCLI находится в «Program Files (x86) / HandBrake» (x86, очевидно, только в 64-битной версии)), однако Program Files не находится в пути поиска, насколько я могу судить.

Для MacOSX я понятия не имею, как выполнять «Папки приложений» Mac из командной строки, кроме как с помощью команды «open»команда.Но это не проблема, так как то, что я действительно ищу, это HandBrakeCLI, который является просто обычным исполняемым файлом.Однако HandBrakeCLI не устанавливается в / usr / bin или / usr / local / bin (или любые другие варианты)

Моя лучшая идея - создать файл конфигурации, который имеет путь к HandBrakeCLI.Однако, если я пойду по этому пути, было бы идеально определить, на какой платформе я работаю, но это еще одна проблема.Один я сделал только с разделами C #ifdef, а не с Ruby или Java.

Буду признателен за любой ввод.

1 Ответ

1 голос
/ 21 декабря 2010

Вы можете получить текущую ОС на Java, используя

System.getProperty("os.name")

В рубине:

require 'rbconfig'
puts Config::CONFIG['host_os'] 

Надеюсь, это поможет:)

...