文件格式
- 管道文件: P
ls -l 第一個字符爲P, 那麼爲管道文件
- 套接字:S
有名管道用於沒有血緣關係進程間通信
利用本地套接字建立進程間通信
sockaddr_un |
paramter |
sun_family |
AF_UNIX |
char path[108] |
“server.sock” |
Sever
int lfd=socket(AF_LOCAL, sock_stream, 0);
unlink("serv.socket");
struct sockaddr_un serv;
serv.sun_family = AF_LOCAL;'
strncpy(serv.sun_path, "server.socket");
bind(lfd, (struct sockaddr &)*serv, len);
listen(lfd,36);
struct sockaddr client;
int len = sizeof(client);
int cfd = accept(lfd, &client, &len);
printf("client bind file:%s", client.sun_path);
send()
recv()
close(fd);close(lfd);
Client
int fd=socket(AF_LOCAL, sock_stream, 0);
unlink("client.socket");
struct sockaddr_un client;
client.sun_family = AF_LOCAL;'
strncpy(client.sun_path, "client.socket");
bind(fd, (struct sockaddr &)*client, len);
struct sockaddr_un serv;
serv.sun_family = af_local;
strcpy(serv.sun_path, "server.socket");
connet(fd,&serv,sizeof(serv));
send()
recv()
close(fd);close(lfd);
server.socket |
client.socket |
server操作 |
client操作 |
內核server緩衝區 |
內核client緩衝區 |
本地套接字實際是對映射到內核空間緩衝區的文件描述符的操作。