Haskell: Sockets de domaine Unix
-
28-10-2019 - |
Question
Je ne trouve pas de bonnes informations sur la gestion des sockets de domaine Unix dans Haskell. J'ai besoin d'une fonction simple pour ouvrir une prise et y écrire une commande. Quelqu'un peut-il m'aider avec un avis sur où lire ceci ou peut-être en donner un exemple?
Fondamentalement, j'ai besoin de porter cette fonction Ruby simple (si cela aide à comprendre ce que je veux dire):
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
Tout ce qu'il out ouvre Socket et écrit une commande pour qu'il renvoie True lors du succès. Merci.
La solution
Je pense que je l'ai compris. Eh bien, cela fonctionne et fait ce dont j'ai besoin, donc je suppose que cela devrait faire pour l'instant.
Voici l'extrait (sans aucune vérification d'erreur) si quelqu'un a besoin d'une chose similaire:
monitor n c = do
soc <- socket AF_UNIX Stream 0
connect soc (SockAddrUnix (vmBaseDir </> n </> "monitor.soc"))
send soc (c ++ "\n")
sClose soc