2012-02-22 10 views
7

Non riesco a trovare una buona informazione su come gestire i socket di dominio Unix in Haskell. Ho bisogno di una semplice funzione per aprire un socket e scrivere un comando su di esso. Qualcuno può aiutarmi con un consiglio su dove leggere o magari dare un esempio?Haskell: prese di dominio Unix

Fondamentalmente, ho bisogno di portare questo semplice funzione di Ruby (se aiuta a capire cosa intendo):

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 

Tutto ciò che fa presa apre e scrive un comando ad esso restituendo vero in caso di successo. Grazie.

+0

Ci sono 2 esempi in 'Network.Socket.ByteString'. – qubital

+0

Grazie. Sono riuscito a raccogliere le informazioni bit per bit. –

+6

Dovresti inserire la risposta come risposta e accettarla, in modo che questa domanda non venga visualizzata come non risposta. – singpolyma

risposta

8

Penso di aver capito. Bene, funziona e fa ciò di cui ho bisogno quindi immagino che dovrebbe fare per ora.

Ecco il frammento di (senza alcun controllo di errore) se qualcuno ha bisogno di una cosa simile:

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