原创 I/O複用----poll

一、poll系統調用    poll 和select類似,是在指定時間內輪詢一定數量的文件描述符,以測試其中是否有就緒者。    poll的原型爲:#include <poll.h> int poll(struct pollfd* fds

原创 libevent---event_base事件處理框架

一、event_base 數據結構     event_base是整個libevent的核心,它持有所有註冊的事件,並負責通知激活的事件。在event-internal.h中。struct event_base { const stru

原创 I/O複用----epoll

一、內核事件表    epoll是linux特有的I/0複用函數,它在實現和使用上與select、poll有很大差異。    首先,epoll使用一組函數來完成任務,而不是單個函數;    其次,epoll吧用戶關心的文件描述符上的事件放

原创 linux socket非阻塞之 send 和sendto函數

1,函數原型#include <sys/socket.h> ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags); ssize_t sendto(int

原创 linux socket非阻塞之connect 函數

1,connect原型#include<sys/socket.h> int connect (int sockfd, const struct sockaddr * servaddr, int addrlen);如果是TCP套接字,con

原创 文件 I/O操作open、lseek、read、write、close詳解

一,文件描述符、套接字和管道        對於內核而言,所有打開的打開的文件都通過文件描述符引用。文件描述符是一個非負整數。        內核爲每個進程維護一個結構體struct task_struct,可稱爲進程控制塊(PCB: P

原创 劍指offer 15-反轉鏈表

1,題目 定義一個函數,輸入一個鏈表的頭結點,反轉該鏈表並輸出反轉後鏈表的頭結點。 2,分析 反轉鏈表進行的其實就是指針指向的操作問題,當前節點指針pNode,將其指向前一個指針pPrev,此時pNode原先指向的下一節點斷開,所以還需

原创 創建鏈表-頭插法和尾插法

1,頭插法和尾插法 新增節點插入的位置不同,頭插法是在頭結點之後,尾插法只在鏈表末尾。 2,代碼 #include <stdio.h> typedef struct ListNode { int data; struct ListN

原创 socket設置爲非阻塞模式

1,套接字的默認狀態是阻塞的。即當發出一個不能立即完成的套接字調用時,該進程將被投入睡眠,等待相應操作完成。2,阻塞的套接字分爲下面四類:輸入操作:包括read、recv、recvfrom和recvmsg。輸出操作:包括write、sen

原创 有符號數與無符號數比較-詳解

正如我們所知道的,編程語句都有很多的基本數據類型,如char,inf,float等等,而在C和C++中還有一個特殊的類型就是無符號數,它由unsigned修飾,如unsigned int等。大家有沒想過,就是因爲這些不同的類型,而使大家編

原创 劍指offer 15--鏈表中倒數第n個節點

1,題目 輸入一個鏈表,輸出該鏈表中倒數第k個節點。爲了符合大多數人的習慣,本題從1開始,即鏈表的尾節點是倒數第一個節點。例如一個鏈表有6個節點,從第一個節點開始它們的值是1、2、3、4、5、6。這個鏈表倒數第3個節點是值爲4的節點。 2

原创 互斥量

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <errno.h> #define MAXNITE

原创 linux stat函數

linuxC函數之stat函數 1.函數功能: 通過文件名filename獲取文件信息,並保存在buf所指的結構體stat中 2.函數原型 1)函數頭文件 [cpp] view plain copy #in