2013-11-21 46 views
0

我正在写一个服务器应用程序(我的第一个),我遇到了一个问题。我想确保在关闭时调用每个析构函数(保存数据,..),因此我正在处理过程信号。但是,当我的线程进入阻塞接受调用时,它显然不会退出,直到接受连接。防止陷入阻塞呼叫

我应该如何去实施?我更喜欢我是否可以简单地指出是否通过变量输入阻塞接受,但这可能是不可能的(或关于应用程序如何运行)。是使用select的最佳方法(创建一个临时文件,当信号被捕获时将被写入)?

+0

这个阻塞呼叫没有超时吗? –

+1

这是有点不清楚你问什么。如果在一个阻塞的'accept()'调用期间发出一个信号,'accept()'调用将返回'EINTR',所以你的程序应该能够退出。我不太确定如何指示是否要“accept()”阻止会有所帮助;你打算在一个循环中反复轮询吗?这会占用大量的CPU时间; 'select()'确实比繁忙的等待更好。你能展示一下你想做的事吗?讨论一个具体的例子会容易一点。 –

+0

这实际上比这更复杂一些,我试图用我的问题来简化它,但是现在我看到我现在还不清楚。无论哪种方式,选择临时FD可能是我的问题的正确答案,我只是不确定是否有更好的。感谢您的回答。 – user2524502

回答

0

你想要释放什么?您可以使用free(pointer to the structure)来取消分配。