Socketpair 简介「建议收藏」

Socketpair 简介「建议收藏」socketpair-aslightgeneralizationofpipesusedfortwo-waystreamcommunication.以下内容来自:匠意雕码http://my.oschina.net/zengsai/blog/12583

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

socketpair – a slight generalization of pipes used for two-way stream communication.

以下内容来自:匠意雕码 http://my.oschina.net/zengsai/blog/12583

今天用了一个从没玩过的socket函数socketpair(),它的作用是在进程内创建一对sock连接。乍一看好像也没什么,但是配合fork()使用之后就是各种欢乐。如下。

#define STRING1 “message from parent”
#define STRING2 “messgae from child”

#include <sys/types.h>

#include <sys/socket.h>
#include <stdio.h>
#include <errno.h>

main()
{

int sockets[2], child;
char buf[1024];

/* Get the socket pair */
if (socketpair(AF_UNIX, SOCK_STREAM,
0, sockets) < 0) {

printf(“error %d on socketpair\n”, errno);
exit(1);
}

/* create child process */
if ((child = fork()) == -1) {

printf(“fork error %d\n”, errno);
exit(1);
}

if (child != 0) { /* this is the parent */
/* close child’s end of socket */
close(sockets[0]);

/* read message from child */
if (read(sockets[1], buf, sizeof(buf)) < 0) {

printf(“error %d reading socket\n”, errno);
exit(1);
}
printf(“–>%s\n”, buf);

/* write message to child */
if (write(sockets[1],
STRING1, sizeof(STRING1)) < 0) {

printf(“error %d writing socket\n”, errno);
exit(1);
}

/* finished */
close(sockets[1]);

} else { /* the child */

/* close parent’s end of socket */
close(sockets[1]);

/* send message to parent */
if (write(sockets[0], STRING2,
sizeof(STRING1)) < 0) {

printf(“error %d writing socket\n”, errno);
exit(1);
}

/* get message from parent */

if (read(sockets[0],
buf, sizeof(buf)) < 0) {

printf(“error %d reading socket\n”, errno);
exit(1);
}
printf(“–>%s\n”, buf);

/* finished */
close(sockets[0]);
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182078.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java @apimodelproperty(apiignore)

    @ApiModel使用场景:在实体类上边使用,标记类时swagger的解析类。概述:提供有关swagger模型的其它信息,类将在操作中用作类型时自动内省。用法:@ApiModelProperty使用场景:使用在被@ApiModel注解的模型类的属性上。表示对model属性的说明或者数据操作更改。概述:添加和操作模型属性的数据。用法:…

    2022年4月14日
    295
  • document.documentElement.clientHeight「建议收藏」

    document.documentElement.clientHeight「建议收藏」于获取各种浏览器可见窗口大小的一点点研究functiongetInfo(){vars=””;s=”网页可见区域宽:”document.body.clientWidth;s=”网页可见区域高:”document.body.clientHeight;s=”网页可见区域宽:”document.body.offsetWidth”(包括边线和滚

    2025年10月18日
    2
  • Ubuntu创建软连接[通俗易懂]

    Ubuntu创建软连接[通俗易懂]Ubuntu创建软连接建立软连接ln-s原目录删除软连接sudorm或者强制删除-rf创建软连接ln-s源地址目的地址列如:Ubuntu文件系统rootfs_dir软连接到/home/lp目录下ln-s/opt/Linux/root_dir/home/lp/roo_dir就OK了…

    2022年9月30日
    3
  • Vue学习之样式处理

    Vue学习之样式处理Vue学习之样式处理

    2022年4月23日
    34
  • 各种硬件接口_sdio接口速率

    各种硬件接口_sdio接口速率  SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。参考SDIO1.0标准定义了两种类型的SDIO卡:  全速的SDIO卡,传输率可以超过100Mbps;  低速的SDIO卡,支援的时脉速率在0至400KHz之间。  SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速

    2022年10月3日
    2
  • EF原理

    EF原理EF原理

    2022年4月24日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号