Haskell:Unix域套接字

r.s*_*cky 8 haskell unix-socket

我找不到关于在Haskell中处理Unix Domain套接字的好信息.我需要一个简单的函数来打开一个套接字并向它写一个命令.任何人都可以帮我提一下在哪里阅读或者举个例子吗?

基本上,我需要移植这个简单的Ruby函数(如果它有助于理解我的意思):

def monitor(string_command)
  require "socket"
  socket = File.join($vbase, @name, "monitor.soc")
  raise RuntimeError, "Monitor socket does not exst!" unless File.exist? socket
  begin
    UNIXSocket.open(socket) do |s|
      s.puts string_command
      s.flush
    end
  rescue
    return false
  end
  true
end
Run Code Online (Sandbox Code Playgroud)

它只会打开套接字并向其写入命令,成功后返回true.谢谢.

r.s*_*cky 9

我想我明白了.嗯,它可以工作并做我需要的,所以我想它现在应该做.

如果有人需要类似的东西,这里是片段(没有任何错误检查):

monitor n c = do
  soc <- socket AF_UNIX Stream 0
  connect soc (SockAddrUnix (vmBaseDir </> n </> "monitor.soc"))
  send soc (c ++ "\n")
  sClose soc
Run Code Online (Sandbox Code Playgroud)