2012-02-22 10 views
7

No puedo encontrar una buena información sobre cómo tratar con los sockets de dominio de Unix en Haskell. Necesito una función simple para abrir un socket y escribirle un comando. ¿Alguien puede ayudarme con un consejo de dónde leer sobre esto o quizás dar un ejemplo?Haskell: Sockets de dominio de Unix

Básicamente, necesito puerto de esta simple función de Rubí (si ayuda a entender lo que quiero decir):

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 

Todo lo que hace abre zócalo y escribe un comando que lo va a devolver a cierto éxito. Gracias.

+0

Hay 2 ejemplos dados en 'Network.Socket.ByteString'. – qubital

+0

Gracias. Logré recopilar los bits de información por bits. –

+6

Debe poner su respuesta como una respuesta y aceptarla, para que esta pregunta no aparezca como sin respuesta. – singpolyma

Respuesta

8

Creo que lo descubrí. Bueno, funciona y hace lo que necesito, así que supongo que debería hacerlo por ahora.

Aquí es el fragmento (sin ninguna comprobación de error) si alguien necesita una cosa similar:

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