处理被中断的系统调用
生活随笔
收集整理的這篇文章主要介紹了
处理被中断的系统调用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
首先我們要知道什么是慢系統(tǒng)調(diào)用!
慢系統(tǒng)調(diào)用:就是使系統(tǒng)進(jìn)程可能永遠(yuǎn)阻塞的系統(tǒng)調(diào)用。比如,服務(wù)器調(diào)用accept()等待客戶端的鏈接,但是客戶端在無限的時(shí)間內(nèi)都沒有連接的話,服務(wù)器將會一直阻塞在這個(gè)accept函數(shù)之下。
當(dāng)進(jìn)程阻塞在慢系統(tǒng)調(diào)用時(shí),進(jìn)程接收到系統(tǒng)發(fā)送的中斷信號。會使得該系統(tǒng)調(diào)用發(fā)生中斷。一般情況下,必須要考慮重啟這個(gè)被中斷的系統(tǒng)調(diào)用。
舉個(gè)栗子:
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.. }?
總結(jié)
以上是生活随笔為你收集整理的处理被中断的系统调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 并发服务器编程模型
- 下一篇: java信息管理系统总结_java实现科