分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
Clamav杀毒软件源码分析笔记[七]
刺猬@http://blog.csdn.net/littlehedgehog
[accept循环处理]
上次本来可以在文章五把Clamd的主要函数说完的,不过线程未了,火候未到. 这次火候到了,Clamd的尽头也就走到底了.
- if ((thr_pool=thrmgr_new(max_threads, idletimeout, scanner_thread)) == NULL)
- {
- logg("!thrmgr_new failed/n");
- exit(-1);
- }
- time(&start_time); //记录当前时间 保存在start_time中
- for (;;)
- {
- new_sd = accept(socketd, NULL, NULL);
- /* 注意啦注意啦 中断也会打断accept阻塞 这里我们只需要检查errno是不是EINTR即可 如果返回值为-1(表示accpet失败)
- * 又不是中断打扰所致,那就是出了其他问题了.
- */
- if ((new_sd == -1) && (errno != EINTR))
- {
- /* very bad - need to exit or restart */
- #ifdef HAVE_STRERROR_R
- logg("!accept() failed: %s/n", strerror_r(errno, buff, BUFFSIZE));
- #else
- logg("!accept() failed/n");
- #endif
- continue;