文件格式
- 管道文件: 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缓冲区 |
本地套接字实际是对映射到内核空间缓冲区的文件描述符的操作。