Есть ли какой-нибудь удаленный кроссплатформенный способ выполнения внешнего процесса?
Я искал совет о том, как выполнить процесс, который является несколько кроссплатформенным.
Я написал 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 "Папки приложений" из командной строки, кроме как с помощью команды "открыть". Но это не проблема, так как то, что я действительно ищу, это HandBrakeCLI, который является просто обычным исполняемым файлом. Однако HandBrakeCLI не установлен в / usr / bin или /usr/local/bin (или в любом другом варианте)
Моя лучшая идея - создать конфигурационный файл, который имеет путь к HandBrakeCLI. Однако, если я пойду по этому пути, было бы идеально определить, на какой платформе я работаю, но это еще одна проблема. Один я сделал только с разделами C #ifdef, а не в Ruby или Java.
Буду признателен за любой вклад.
1 ответ
Вы можете получить текущую ОС на Java, используя
System.getProperty("os.name")
В рубине:
require 'rbconfig'
puts Config::CONFIG['host_os']
Надеюсь это поможет:)