apue 第十七章 高级进程间通信

UNIX域套接字

socketpair(int domain,int type,int protocol,int sockfd[2])

创建一对无命名相互连接的UNIX域套接字

实现管道pipe(int fd[2]):socketpair(AF_UNIX,SOCK_STREAM,0,fd);


程序17_3、17_4中对消息队列的使用:

接收消息的进程根据key创建消息队列,等待接收

发送消息的进程根据key获得队列的msqid(发送进程根据key获得的qid等于接收进程根据同一个key获得的qid),然后将消息发送至队列,接收进程type=0,接收到队列中第一个消息。


apue中实现的传递文件描述符api:

serv_listen(const char *name)

以路径name创建类型为S_IFSOCK的文件以及unix域套接字,然后调用bind,listen,返回socket文件描述符

serv_accept(int listenfd,uid_t *uidptr)

调用accept,接收请求连接进程的sockaddr_un结构,获得与客户端绑定的S_IFSOCK类型文件的路径,使用stat函数获得客户端SOCK文件的st_uid,保存到uidptr中,返回accept获得的文件描述符,通信建立

cli_conn(const char *name);

客户端创建UNIX域套接字绑定自己的路径(与服务器通信的实际S_IFSOCK文件),调用connect函数使用该套接字连接服务器端(sun_path=name);返回文件描述符


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值