Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Elixir中获取当前操作系统名称?_Elixir - Fatal编程技术网

如何在Elixir中获取当前操作系统名称?

如何在Elixir中获取当前操作系统名称?,elixir,Elixir,在Ruby中,我会使用Ruby_PLATFORM常量来确定我的程序运行在什么操作系统(Mac、Windows、Linux等)上。长生不老药有办法得到这些信息吗 我目前正试图重新创建一个我用Elixir编写的Ruby程序,我有一个方法,可以通过一个依赖于操作系统的系统调用来打开一个文档。该方法类似于: def self.open_document(filename) case RUBY_PLATFORM when %r(darwin) system('open', filename

在Ruby中,我会使用
Ruby_PLATFORM
常量来确定我的程序运行在什么操作系统(Mac、Windows、Linux等)上。长生不老药有办法得到这些信息吗

我目前正试图重新创建一个我用Elixir编写的Ruby程序,我有一个方法,可以通过一个依赖于操作系统的系统调用来打开一个文档。该方法类似于:

def self.open_document(filename)
  case RUBY_PLATFORM
  when %r(darwin)
    system('open', filename)
  when %r(linux)
    system('xdg-open', filename)
  when %r(windows)
    system('cmd', '/c', "\"start #{filename}\"")
  else
    puts "Don't know how to open file"
  end
end
我知道我可以使用Elixir运行Ruby命令,但我不确定如何获得
Ruby\u PLATFORM
值,从而在
case
语句中打开开关,或者我是否真的可以获得该信息。这可能吗

更新 根据并供进一步参考:

iex> :os.type
{:unix, :darwin}
iex> System.cmd("uname", ["-s"])
{"Darwin\n", 0}
您可以调用Erlang以获取平台名称信息:

类型:

Osfamily = unix | win32
Osname = atom()
返回当前对象的Osfamily,在某些情况下还返回Osname 操作系统

在Unix上,Osname将具有与
uname-s
返回值相同的值,但在 小写。例如,在Solaris 1和2上,它将是sunos

在Windows中,Osname将是
nt
(在Windows nt上)或
Windows
(在Windows 95上)

在长生不老药中,你可能需要打电话

:os.type()

使用
Osfamily
作为
:unix
:win32

引用该函数。非常感谢!
:os.type()