0
我正在寫一個服務器應用程序(我的第一個),我遇到了一個問題。我想確保在關閉時調用每個析構函數(保存數據,..),因此我正在處理過程信號。但是,當我的線程進入阻塞接受調用時,它顯然不會退出,直到接受連接。防止陷入阻塞呼叫
我應該如何去實施?我更喜歡我是否可以簡單地指出是否通過變量輸入阻塞接受,但這可能是不可能的(或關於應用程序如何運行)。是使用select的最佳方法(創建一個臨時文件,當信號被捕獲時將被寫入)?
我正在寫一個服務器應用程序(我的第一個),我遇到了一個問題。我想確保在關閉時調用每個析構函數(保存數據,..),因此我正在處理過程信號。但是,當我的線程進入阻塞接受調用時,它顯然不會退出,直到接受連接。防止陷入阻塞呼叫
我應該如何去實施?我更喜歡我是否可以簡單地指出是否通過變量輸入阻塞接受,但這可能是不可能的(或關於應用程序如何運行)。是使用select的最佳方法(創建一個臨時文件,當信號被捕獲時將被寫入)?
你想要釋放什麼?您可以使用free(pointer to the structure)
來取消分配。
這個阻塞呼叫沒有超時嗎? –
這是有點不清楚你問什麼。如果在一個阻塞的'accept()'調用期間發出一個信號,'accept()'調用將返回'EINTR',所以你的程序應該能夠退出。我不太確定如何指示是否要「accept()」阻止會有所幫助;你打算在一個循環中反覆輪詢嗎?這會佔用大量的CPU時間; 'select()'確實比繁忙的等待更好。你能展示一下你想做的事嗎?討論一個具體的例子會容易一點。 –
這實際上比這更復雜一些,我試圖用我的問題來簡化它,但是現在我看到我現在還不清楚。無論哪種方式,選擇臨時FD可能是我的問題的正確答案,我只是不確定是否有更好的。感謝您的回答。 – user2524502