进程间双向通信--sockpair

sockpair是一个套接字,可以用于网络通信,也可用于本机内进程间通信。

目前成都创新互联已为1000多家的企业提供了网站建设、域名、虚拟主机绵阳服务器托管、企业网站设计、雅安网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

sockpair类似于管道,只不过管道是用于单向通信的,只能一方读,一方写,。而想要用于进程间双向通信,就要pipe两次,创建两个管道。sockpair直接就可以实现进程间双向通信。

    1 #include
  2 #include
  3 #include
  4 #include
  5 #include
  6 #include
  7 int main()
  8 {
  9     int fd[2]={0,0};
 10     int sock = socketpair(AF_LOCAL,SOCK_STREAM,0,fd);
 11     if(sock<0)
 12     {
 13         perror("socketpair");
 14         exit(1);
 15     }
 16     pid_t id = fork();
 17     if(id<0)
 18     {
 19         perror("fork");
 20         exit(2);
 21     }
 22     else if(id == 0)
 23     {
 24         close(fd[0]);
 25         char buf[1024];
 26         while(1)
 27         {
 28             memset(buf,'\0',sizeof(buf));
 29             strcpy(buf,"hello world");
 30             write(fd[1],buf,sizeof(buf)-1);
 31             read(fd[1],buf,sizeof(buf)-1);
 32             sleep(1);
 33             printf("father say:%s\n",buf);
 34         }
 35         close(fd[1]);
 36     }
 37     else
 38     {
 39         close(fd[1]);
 40         char buf[1024];
 41         while(1)
 42         {
 43             read(fd[0],buf,sizeof(buf)-1);
 44             printf("child say:%s\n",buf);
 45             memset(buf,'\0',sizeof(buf));
 46             strcpy(buf,"nihao");
 47             write(fd[0],buf,sizeof(buf)-1);
 48             sleep(1);
 49         }
 50         close(fd[0]);
 51     }
 52     return 0;
 53 }
 
 [fbl@localhost socketpair]$ ./my_pair 
child say:hello world
father say:nihao
child say:hello world
father say:nihao
child say:hello world
father say:nihao
child say:hello world


分享标题:进程间双向通信--sockpair
文章出自:http://bzwzjz.com/article/pjdide.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 企业手机网站建设 重庆外贸网站建设 成都商城网站制作 成都网站制作 教育网站设计方案 app网站建设 成都网站建设 网站制作公司 盐亭网站设计 成都网站设计 成都网站建设 重庆网站制作 成都品牌网站建设 成都网站建设 网站建设方案 成都网站制作公司 手机网站制作 网站建设 成都网站建设 企业网站设计 成都网站建设公司 成都网站制作