是否有任何远程跨平台方式来执行外部流程?

时间:2010-12-20 20:53:08

标签: java ruby cross-platform external-process system-calls

我一直在寻找有关如何执行某种跨平台流程的建议。

我已经编写了我的应用程序的Java和Ruby实现,但它不是特定于语言的问题,更多是特定于平台的问题。

在Ubuntu / usr / bin /上的E.G搜索我做的任何事情

# 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”(显然只有64位的x86),但据我所知,Program Files不在搜索路径中。

对于MacOSX,我不知道如何从命令行执行Mac“应用程序文件夹”而不是“open”命令。但这不是一个问题,因为我真正追求的是HandBrakeCLI,它只是一个普通的可执行文件。但是,HandBrakeCLI未安装到/ usr / bin或/ usr / local / bin(或其任何变体)

我最好的想法是创建一个具有HandBrakeCLI路径的配置文件。如果我走这条路线,那么能够检测到我所处的平台是理想的,但这是另一个问题。我只使用C #ifdef部分而不是Ruby或Java。

我很感激任何和所有的输入。

1 个答案:

答案 0 :(得分:1)

您可以使用

获取Java中的当前操作系统
System.getProperty("os.name")

在红宝石中:

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

希望这会有所帮助:)