【发布时间】:2011-07-19 23:16:42
【问题描述】:
我在 Linux 机器上有一个服务器/客户端应用程序。如果客户端尝试发送请求时服务器没有启动,我会收到一个 SIGPIPE 并且应用程序会终止。
在我尝试写入之前,如何检查服务器是否在套接字上可用?
另外值得注意的是,我不想捕获 SIGPIPE,因为客户端实际上是共享对象的一部分,许多应用程序使用该共享对象,这些应用程序可能已经或可能尚未定义自己的信号处理方法。
谢谢
【问题讨论】:
-
您可以禁止本地 unix 套接字。 SIGPIPE 只为这种类型的套接字生成。但这可能会损害性能(很多)。
-
另一个 SO 帖子可能有用:stackoverflow.com/questions/108183/…
-
您也获得了用于 inet 流套接字的 SIGPIPE。
-
@Ilkka:你只需引入一个竞争条件,让错误更加罕见。
-
我建议将问题标题更改为更具描述性的内容。也许“如何在不干扰主程序的情况下处理库中的 SIGPIPE”