タグ

syscallとgithubに関するnabinnoのブックマーク (2)

  • syscall-study/til/2016-05-25.md at master · yuuki/syscall-study

    子プロセスでacceptedなソケットをclose()すれば、FINパケットが送られると思っていたが、親プロセスでもacceptedなソケットをclose()する必要があった UNIXネットワークプログラミング第2版の4.8節 並行サーバに以下のようなことが書かれていた。 ソケットやファイルはすべて参照カウントをもつ。fork()すると子プロセスがディスクリプタを複製するため、参照カウントが2になり、子プロセスがclose()するだけだと参照カウントが0にならず、FINパケットが送信されない。したがって、親プロセスでも同じソケットディスクリプタをclose()する必要がある。 強制的にFINを送るshutdown()というものもある。shutdown()をどういうときに使うかもUNIXネットワークプログラミングにかかれていた。 大量に子プロセスが残っていて、ab -n 1000 -c 1

    syscall-study/til/2016-05-25.md at master · yuuki/syscall-study
  • syscall-study/til/2016-05-18.md at master · yuuki/syscall-study

    [pid 2406] accept4(3, <unfinished ...> [pid 2407] sched_yield( <unfinished ...> [pid 2406] <... accept4 resumed> {sa_family=AF_INET, sin_port=htons(42741), sin_addr=inet_addr("127.0.0.1")}, [16], SOCK_CLOEXEC|SOCK_NONBLOCK) = 5 [pid 2406] epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1105458016, u64=139991269503840}}) = 0 [pid 2406] getsockname(5, {sa_family=AF_INET, si

    syscall-study/til/2016-05-18.md at master · yuuki/syscall-study
  • 1