【发布时间】:2014-07-09 04:32:46
【问题描述】:
我的问题是 Haskell 如何与系统交互。 比如IO是怎么发生的?
我对 IO monad 不感兴趣。或者如何让 Haskell 打印字符串或读取文件。 我对 Haskell 和底层操作系统之间的层(如果它是这样工作的)感兴趣。 Haskell 本身(不是我)如何将任何内容打印到控制台?它如何与操作系统交互?
例如,在 Python 中,我可以执行任何系统命令。我可以做到echo message。
真正重要的是了解套接字的工作原理,以及如何确保我的程序在获得新连接时被中断。
在 python 中,一种方法是使用epoll,它是操作系统的一部分(我相信只是接管了对 python 进程的控制)。
编辑:正如@Daniel Wagner 所建议的,让我把这个问题说得更具体一些。 我目前并没有为问题而苦苦挣扎,我只是理论上很好奇。 所以让我问你这个: Haskell 如何处理 Linux 上的套接字产生的中断?
编辑:为了更容易理解我在答案中寻找的内容: - 当 Haskell 被中断时,它会停止死在它的轨道上吗? - 是否可以保证我可以在完成旧连接处理之前回答新连接? - 它如何获得中断?
【问题讨论】:
-
在某些时候,Haskell 标准 I/O 库与本机代码有一些绑定,可能是标准 C I/O 例程。
-
你的问题有点含糊。 (操作系统很大!)是“我如何使用套接字?”?或者可能是,“我如何生成另一个运行特定命令的进程?”?如果两者都不是,那么您现在面临的实际问题是什么?你需要做什么你不知道该怎么做?
标签: sockets haskell io operating-system