•全功能的事件循環基於epoll、kqueue、IOCP、event portsnode
•異步的TCP和UDP套接字linux
•異步的DNS解析git
•異步的文件和文件系統操做github
•文件系統事件•ANSI轉義代碼控制的TTYvim
•PC包括套接字共享,使用Unix域套接字或有名管道(Windows)windows
•子進程bash
•線程池微信
•信號處理異步
•高分辨率時鐘oop
•線程和同步原語
筆者是MacOS的系統,其餘操做系統能夠查看官方安裝文檔[4],接下下來介紹一下 libuv的安裝與使用。
1.下載libuv的源碼
git clone https://github.com/libuv/libuv.git複製代碼
2.下載完成後進入項目,依次執行下面命令,進行編譯安裝,遇到問題 能夠在libuv的ISSUE[5] 下尋找答案或者留言提問。
sh autogen.sh
./configure
make
make check
make install複製代碼
3.安裝完成後,查看一下本身本地 /usr/local/include/ 下是否有uv.h等頭文件,若是存在即安裝完成。
4.查看靜態連接庫文件/usr/local/lib/libuv.a 是否存在。
下述示例默認有c語言環境,能夠輸入gcc驗證一下,沒有c環境的話請搜索安裝gcc環境。這邊的hello world參考的文檔裏推薦的入門示例[6]。
1.新建文件 main.c。
vim main.c複製代碼
2.文件寫入以下內容。
// main.c
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <uv.h>
int main() {
uv_loop_t *loop = malloc(sizeof(uv_loop_t));
uv_loop_init(loop);
printf("Now quitting.\n");
uv_run(loop, UV_RUN_DEFAULT);
uv_loop_close(loop);
free(loop);
return 0;
}複製代碼
3.若是提示沒有uv.h,能夠試試下面的頭替代。
#include </usr/local/include/uv.h>複製代碼
4.執行編譯連接命令。
gcc -o main main.c -luv
或者
gcc -o main main.c /usr/local/lib/libuv.a複製代碼
5.執行可執行文件 ./main 進行驗證。
6.程序解釋:首先uv_loop_init開啓了一個loop,uv_run執行,可是loop是空的,沒有要處理的事件,而後很快uv_loop_close退出。
目前一個使用libuv作的入門實例已完成,接下來筆者將會解析一下內部的Api,作一些實例分享出來,有興趣的請關注筆者微信公衆號哦 。
[1]
Projects that use libuv:
[2]
是一套操做系統 API 規範。通常而言,遵照 POSIX 規範的操做系統指的是 UNIX、Linux、Mac OS X 等:
[3]
Windows 平臺上的內核事件通知相應的機制Input/Output Completion Port:
[4]
安裝文檔:
[5]
ISSUE:
[6]
入門示例:
如上內容均爲本身總結,不免會有錯誤或者認識誤差,若有問題,但願你們留言指正,以避免誤人,如有什麼問題請留言,會盡力回答之。若是對你有幫助不要忘了分享給你的朋友或者點擊右下方的「在看」哦!也能夠關注做者,查看歷史文章而且關注最新動態,助你早日成爲一名全棧工程師!
微信掃一掃加羣全棧技術交流, 一塊兒討論一塊兒進步!