簡體   English   中英

在Unix上的C中取消UDP接收

[英]Cancel UDP recvfrom in C on Unix

我剛剛開始學習用C語言進行網絡編程的工作方式,並且我編寫了一個小程序來向UNIX終端發送消息或從UNIX終端發送消息。 我在程序中使用了pthread,其中一個基本上只是等待recvfrom()來接收消息。

但是,如果用戶選擇退出程序,我希望能夠正確關閉所有線程。 我現在設置的方式是,一個不同的線程會取消等待recvfrom的線程,但是我擔心這可能不是一個好主意,因為我沒有關閉套接字,也沒有釋放所有的內存。分配。

有沒有辦法取消recvfrom()調用,或者有某種辦法在取消pthread時運行某個例程?

謝謝。

如果使用pthread_kill將信號發送到線程,則recvfrom()應該返回-1,並將errno設置為EINTR然后可以檢查“應用程序正在退出”狀態並正常完成。

另一種方法是維護與線程ID匹配的打開連接的列表。 然后,每當您取消線程時,請在列表中查找它的套接字並在套接字上調用close。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM