Приведенная ниже функция основана на привязках 0MQ Haskell.Я получаю ошибку во время выполнения.Ошибка говорит getIntOpt: interrupted (Interrupted system call)
и программа останавливается.
Вероятно, это связано с параметрами командной строки, которые я использую, а затем отбрасываю из-за критерия?
Изменить: обнаружил, что я получаю сообщение об ошибке также, когда я оставляю свой собственный код с cmdArgs.За этим стоит гораздо более интересная проблема.Смотри последний абзац здесь .Но я до сих пор не знаю, как с этим справиться.
sendReceive :: B.ByteString -> IO ()
sendReceive datastring = withContext 1 $ \context -> do
withSocket context Req $ \requester -> do
--putStrLn "Connecting ..."
connect requester "tcp://192.168.35.84:5559"
let tryOnePing (!c, !f) i = do
send requester datastring []
--putStrLn "Sent ..."
r <- receive requester []
--putStrLn "Received ..."
return $ case B.unpack r of
datastring -> (c+1, f)
_ -> (c, f+1)
(c,f) <- foldM tryOnePing (0,0) [1 .. 1000]
-- c and f are not used in this example
return ()
main = do
n <- cmdArgsRun strlen
let datastring = B.pack (take (byte n) $ randomRs ('a','z') (mkStdGen 3))
putStrLn "Starting..."
withArgs [] $ defaultMain [bench "sendReceive" $ whnfIO (sendReceive datastring)]