处理被中断的系统调用
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                处理被中断的系统调用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                首先我們要知道什么是慢系統調用!
慢系統調用:就是使系統進程可能永遠阻塞的系統調用。比如,服務器調用accept()等待客戶端的鏈接,但是客戶端在無限的時間內都沒有連接的話,服務器將會一直阻塞在這個accept函數之下。
當進程阻塞在慢系統調用時,進程接收到系統發送的中斷信號。會使得該系統調用發生中斷。一般情況下,必須要考慮重啟這個被中斷的系統調用。
舉個栗子:
int connfd; struct sock_addr_in cliaddr; signal(SIGCHLD,signal_func); for(;;) {clien = sizeof(cliaddr);if((connfd = accept(listenfd,(struct sock_addr*)cliaddr,&clien))<0)if(errno == EINTR) continue; //重啟 acceptelse err_sys("accept error");//fork & do someyhing.. }?
總結
以上是生活随笔為你收集整理的处理被中断的系统调用的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 并发服务器编程模型
- 下一篇: 41.简单说一下noexecpt关键字
