select超時示例

引述chinaunix ID“大富大貴”的話來解釋select的原理:“就像一個人要睡覺了同時叫10個人在他們需要幫忙的時候叫他一樣。每個人都要決定什麼時候叫醒他。如果沒有叫醒,那麼最後他自己定的鬧鐘會叫醒他(就是那個時間參數)”。

 

int read_char_with_timeout(int fd, int timeout ,char *cp)
{
	fd_set rfd;
	struct timeval tmo;

	tmo.tv_sec = timeout/1000000;
	tmo.tv_usec = timeout % 1000000;
	
	FD_ZERO(&rfd);
	FD_SET(fd,&rfd);

	if(select(fd+1, &rfd,NULL,NULL,&tmo) <= 0)
		return E_L_TIME_OUT;

	if(read(fd,cp,1) != 1)
		return E_L_EXCEPTION;
	else
		return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章