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