【发布时间】:2012-07-19 10:12:46
【问题描述】:
在 inetd 和 systemd 类型的系统中,系统可以绑定一个套接字并使用已经存在的套接字启动应用程序,例如提供基于套接字的服务启动。我想在我的一个 Haskell 守护程序中利用此功能。
守护进程当前调用socket、bindSocket、listen 来创建一个Socket 对象,我以后可以调用accept。要将其更改为 inetd 类型系统,我需要使用标准输入作为 Socket,但目前我能找到的只有 stdin :: Handle 或 fdToHandle :: CInt -> Handle - 两者都不是我需要的。
我似乎找不到任何类型为Handle -> Socket 的东西,也找不到任何类似于stdin :: Socket 的东西。我能找到的最接近的是mkSocket,它是非常低级的,并且大多数其他语言(即Ruby)都提供了将文件描述符转换为套接字的调用,而无需指定各种其他参数。
【问题讨论】:
标签: networking haskell posix inetd systemd