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 のコードを確認中。なんだろ。。

追記