タグ

ブックマーク / shinh.hatenablog.com (3)

  • select の semantics - 兼雑記

    なんか要は select で write 待ちしてる時に、帰ってきた file descriptor に何バイトまで書けるか、という話。 http://shinh.skr.jp/m/?date=20081008#p01 のへんに適当にはったりしたリンクによると、ポータビリティ考えるなら非同期使え、ってのが明らかに正しいぽい。 POSIX なんかを見てみると、 http://www.opengroup.org/onlinepubs/009695399/functions/select.html If a descriptor refers to a socket, the implied output function is the sendmsg() function supplying an amount of normal data equal to the current value

    select の semantics - 兼雑記
  • GCC とメタプログラミング - 兼雑記

    GCC やっぱすごいなぁという話 まぁコード生成する類のものは全部メタプログラミングだと考えるとします。当時のkinaba先生世界観。例としては C のコードを cpp で C にするとか、 C のコードを gcc で asm にするとか autotools でほげほげとか。 それはともかく最近思いついた(全然コードを読まない)コードリーディング技法として make してみてその標準出力をゆっくり眺めるというものがあります。ファイルの依存関係がわかれば割と内容は予測がついたりします。あと GCC のコード眺める技法として gdb で適当に break しかけてバックトレースを見ると普通に追うよりラクというのがあるのですがそれは別の話。 でまぁ make の出力とか見てると GCC ってすごいメタプログラミングの宝庫だなぁと思ったのでした。特にフロントエンド側よりバックエンド側がにんともかん

    GCC とメタプログラミング - 兼雑記
    rich850
    rich850 2008/02/21
    GCCのバックエンドの話
  • サーバ - 兼雑記

    C だとお決まりの socket bind listen accept で作る。以下同時接続数 1 の echo サーバ。 #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> int main() { int sock; struct sockaddr_un addr; if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { perror("socket"); return 1; } memset(&addr, 0, sizeof(addr)); addr.sun_family = PF_UNIX; strcpy(addr.sun_path, "/tmp/hoge"); if (bin

    サーバ - 兼雑記
  • 1