2012-02-22 38 views
7

我找不到處理Haskell中的Unix域套接字的好消息。 我需要一個簡單的函數來打開一個套接字並向它寫入一個命令。 任何人都可以幫助我在哪裏閱讀這方面的建議,或者舉個例子嗎?Haskell:Unix域套接字

基本上,我需要移植這個簡單的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 

它所做打開插座,它返回true在成功寫入命令。 謝謝。

+0

中有'Network.Socket.ByteString'給出兩個例子。 – qubital 2012-02-22 02:52:07

+0

謝謝。我設法按位收集信息位。 – 2012-02-22 03:20:07

+6

您應該將答案作爲答案並接受答案,以便此問題不會顯示爲未答覆。 – singpolyma 2013-02-19 02:41:04

回答

8

我想我想通了。那麼,它的工作原理和做我需要的,所以我猜它現在應該做。

這裏是片斷(沒有任何錯誤檢查)如果有一個人需要類似的事情:

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