[英]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.