Есть ли какой-либо удаленный кроссплатформенный способ выполнить внешний процесс?

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

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

Например, в Ubuntu / usr / bin / ищется все, что я делаю

# Ruby

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

Для Windows он будет искать в текущем каталоге, в котором я работаю. Однако, если скопировать исполняемый файл 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.

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


person EnabrenTane    schedule 20.12.2010    source источник
comment
Почему бы вам не убедиться, что двоичный файл находится в пути?   -  person moinudin    schedule 20.12.2010
comment
Бинарный файл всегда будет находиться в пути только в Linux, если кто-то не поместит его туда вручную. Я не уверен, как проверить, находится ли он на пути. Я могу проверить $! в Ruby и регулярное выражение, но это опять же будет зависеть от того, на какой платформе вы находитесь.   -  person EnabrenTane    schedule 21.12.2010


Ответы (1)


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

System.getProperty("os.name")

В рубине:

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

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

person laura    schedule 20.12.2010