Socket(Unix)

Unixソケットでプロセス間の通信を行うために, 複数のシステムコールを用います.
socket -> bind -> listen -> accept

/* Socket */
#include <sys/types.h>
#include <sys/socket.h>

int socket(int domain, int type, int protoclo);
socketでソケットを作成できるが, そのソケットにはアドレスは割り当てられていない.
bindは, ファイルディスクリプタ"sockaddr"にaddrで指定されたアドレスを割り当てる.
この操作が[ソケットに名前をつける]と呼ばれている.
/* Bind */
#include <sys/types.h>
#include <sys/socket.h>

int bind(int sockfd, const struct sockaddr *addr,
        socklen_t addrlen);
`listen` ソケット上の接続を待つ.
listenは, `sockfd`が参照するソケットを接続待ちソケットとして印をつける.
接続待ちソケット - `accept`を用いて到着した接続要求を受け付けうるのに使用されるソケット
/* Listen */
#include <sys/types.h>
#include <sys/socket.h>

int listen(int sockfd, int backlog);
この関数は, 接続待ちソケット socket 宛ての保留状態の接続要求が入っているキューから先頭の接続要求を取り出し, 接続済みソケットを新規に生成し,
そのソケットを参照する新しいファイル・ディスクリプタを返す.
第一引数`sockfd`は'socket'によって生成され, 'bind'によって名前をつけられ, 'listen'で接続待ちをしているソケット.
第二引数`*addr`は(struct addr *):sockaddr構造体へのポインタ.
/* Accept */
#include <sys/types.h>
#include <sys/socket.h>

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);