libuv の helloworld
helloworld サンプルがあったので動かしてみた。
環境構築
- libuv の最新版をインストールします。
~/libuv-v0.11.9$ ./configure ~/libuv-v0.11.9$ make ~/libuv-v0.11.9$ sudo make install
デフォルトで /usr/local にヘッダとライブラリが入ります。
$ ls /usr/local/include/ uv-errno.h uv-linux.h uv-unix.h uv.h $ ls /usr/local/lib/ libuv.a libuv.la libuv.so libuv.so.11 libuv.so.11.0.0
サンプル入手
「Download Gist」から tar.gz を落とすと以下のファイルが入手出来ます。
$ tar xvfz gist4305806-81dcdc73c3a6686e89d6f03e0552c45a5dc8c358.tar.gz gist4305806-81dcdc73c3a6686e89d6f03e0552c45a5dc8c358/ gist4305806-81dcdc73c3a6686e89d6f03e0552c45a5dc8c358/README.md gist4305806-81dcdc73c3a6686e89d6f03e0552c45a5dc8c358/client.c gist4305806-81dcdc73c3a6686e89d6f03e0552c45a5dc8c358/hello.txt gist4305806-81dcdc73c3a6686e89d6f03e0552c45a5dc8c358/server.c
- サンプルは uv_run の引数が足りないので、少し書き換え。
- server.c
// ループ開始 // uv_run(uv_default_loop()); uv_run(uv_default_loop(), UV_RUN_DEFAULT);
- client.c
// ループを開始 // return uv_run(loop); return uv_run(loop, UV_RUN_DEFAULT);
コンパイル
% gcc -g -Wall -I/usr/local/include server.c -luv -Wl,-rpath /usr/local/lib -o server % gcc -g -Wall -I/usr/local/include client.c -luv -Wl,-rpath /usr/local/lib -o client
実行
- 適当なホストで。
$ ./server
- 同じホストの別ターミナルで。
$ ~/prog/libuv/client result: hello from file on server! result:
- 一応、helloworld.txt から読み込んで表示してるのは確認。(書き換えると文字に反映される)
- 2つ目の result が空なのが気になるので、server.c のコードを確認中。なんだろ。。
追記