Linux
biubiubiubiubiubiu~~
这个作者很懒,什么都没留下…
展开
-
strpbrk、strspn、strchr 快速记忆!!!
strpbrk char *strpbrk(const char *s1, const char *s2); strpbrk会遍历字符串s1的每一个字符,如果当前字符s2里面也有当前遍历到的这个字符,那就马上返回当前字符的指针。 比如: char s1[] = "GET http://www.baidu.com http1.1\r\n"; char* ret = strpbrk(s1, " \t"); 此时指针ret指向GET后面的那个空格,因为遍历到那个空格发现strpbrk的第二个参数里面也有一个原创 2020-06-02 16:59:09 · 296 阅读 · 0 评论 -
EPOLLRDHUP事件是干啥的???
EPOLLRDHUP是从Linux内核2.6.17开始由GNU引入的事件。 当socket接收到对方关闭连接时的请求之后触发,有可能是TCP连接被对方关闭,也有可能是对方关闭了写操作。 如果不适用EPOLLRDHUP事件,我们也可以单纯的使用EPOLLIN事件然后根据recv函数的返回值来判断socket上收到的是有效数据还是对方关闭连接的请求。 ...原创 2020-06-02 11:22:34 · 1947 阅读 · 0 评论 -
pthread_create的第三个参数为什么必须是静态函数???
#include <pthread.h> int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void *(*start_routine)(void*), void *arg); 上面是pthread_create函数的声明,这个声明看起来一片安静祥和,然而当在某个类的实现中调用pthread_create函数时,就有可能出现参数类型不匹配的情况。比如第三个参数填入一个类中的非静态函数时。。。 为何pth原创 2020-06-02 01:04:53 · 1302 阅读 · 0 评论 -
pthread_detach函数是干啥的????
在Linux中,线程有两种状态:joinable和unjoinable。 joinable状态:默认是这种状态,线程运行结束之后堆栈空间和线程描述符并不会释放,需要让另一个线程调用pthread_join函数来回收本线程所占有的资源。而当一个线程调用pthread_join函数时,它会阻塞直到它所等待的线程运行结束再回收资源并返回。 unjoinable状态:这个状态下,线程运行结束后会自动把线程所占有的资源释放掉,不需要让另一个线程去调用pthread_join函数。而让一个线程的状态变成unjoina原创 2020-06-02 00:29:43 · 255 阅读 · 0 评论