摘要: errno!=EINTR注意read()如果读到数据为0,那么就表示文件结束了,如果在读的过程中遇到了中断那么会返回-1,同时置errno为EINTR。因此判断read的条件:如果read返回<=0如果==0表示文件结束,处理如果<0&&errno==EINTR表示中断,处理否则,出错但是write()如果写入的数据为0,那么就表示出错,也就是无法写入了,而如果在写的过程中遇到了中断,那么write()会返回-1,同时置errno为EINTR。因此判断write是否成功时,条件是write返回的结果是否<=0if<=0{if<0{iferrno== 阅读全文
posted @ 2013-06-02 17:37 hark.perfe 阅读(650) 评论(0) 推荐(1) 编辑
摘要: GETSOCKOPT(2) Linux Programmer's Manual GETSOCKOPT(2)NAME getsockopt, setsockopt - get and set options on socketsSYNOPSIS #include <sys/types.h> /* See NOTES */ #include <s... 阅读全文
posted @ 2013-06-02 13:13 hark.perfe 阅读(256) 评论(0) 推荐(0) 编辑
摘要: GETSOCKOPT(2) Linux Programmer's Manual GETSOCKOPT(2)NAME getsockopt, setsockopt - get and set options on socketsSYNOPSIS #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt 阅读全文
posted @ 2013-06-02 03:35 hark.perfe 阅读(249) 评论(0) 推荐(0) 编辑
摘要: #include <sys/socket.h> /*connect,send,recv,setsockopt等 */#include <sys/types.h>#include <sys/stat.h>#include <netinet/in.h> /* sockaddr_in, "man 7 ip" ,htons*/#include <poll.h> /*poll,pollfd*/#include <arpa/inet.h> /*inet_addr,inet_aton*/#include <un 阅读全文
posted @ 2013-06-02 01:38 hark.perfe 阅读(157) 评论(0) 推荐(0) 编辑
摘要: /****************************************************************************************************************************************************/#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/stat.h>#include <netinet/in.h>#include < 阅读全文
posted @ 2013-06-02 01:10 hark.perfe 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。 pool_init()函数预先创建好max_thread_num个线程,每个线程执thread_routine ()函数。该函数中while (pool->cur_queue_size == 0){ pthread_ 阅读全文
posted @ 2013-06-02 01:09 hark.perfe 阅读(171) 评论(0) 推荐(0) 编辑