我在Linux系统中有一个服务器/客户端应用程序。如果客户端尝试发送请求时,服务器没有启动,我会收到SIGPIPE信号并导致应用程序终止。
在尝试写入之前,我该如何检查socket上的服务器是否可用?
还值得注意的是,我不想捕获SIGPIPE,因为客户端实际上是由许多应用程序共享的共享对象的一部分,这些应用程序可能已经定义了自己的信号处理方法。
谢谢
MSG_NOSIGNAL
作为标志传递给 send()
。send
在失败时返回-1而不是SIGPIPE。有趣的是,在send
的man页面中我没有找到关于MSG_NOSIGNAL
的提及。 - steveo225这篇由kroki撰写的文章描述了一种看起来不错的方法。
总结如下:
/var/run/server.pid
文件或类似的东西,客户端可以检查以确定服务器是否在运行。 - Ilkka