首页 > 系统相关 >TCP/IP网络编程 -- (十一)进程间通信

TCP/IP网络编程 -- (十一)进程间通信

时间:2023-03-16 18:01:24浏览次数:37  
标签:-- IP fds TCP 间通信 int 管道 进程

TCP/IP网络编程 -- (十一)进程间通信

进程间通信基本概念

因为两个进程间具有完全独立的内存空间,因此通信需要特殊的方式

通过管道实现进程间通信

image-20230316172326936

管道并非进程的资源,与 socket 类似是操作系统的资源(也就不是 fork 的复制对象),两个进程通过操作系统提供的内存空间通信

#include <unistd.h>

int pipe(int filedes[2]);

成功返回 0,失败返回 -1

filedes[0]:通过管道接收数据时使用的文件描述符,即管道出口

filedes[1]:通过管道传输数据时使用的文件描述符,即管道入口

int fds[2];
pipe(fds);
pid = fork();
char str[] = "hello";
if (pid == 0)
    write(fds[1], str, sizeof(str));
else
    read(fds[0], buf, BUF_SIZE);

image

通过管道进行进程间双向通信

image

但是要注意管道中的数据是无主数据,先读的会读取走,因此如果子进程给父进程发了数据,子进程比父进程先读,那么数据又会被子进程读走

一般不会用一个管道来进行双向通信,而是用两个管道

标签:--,IP,fds,TCP,间通信,int,管道,进程
From: https://www.cnblogs.com/hzy717zsy/p/17223670.html

相关文章

  • vue3 动态获取 img中的src地址
      vite 官方默认的配置,如果资源文件在assets文件夹打包后会把图片名加上hash值,但是直接通过:src="imgSrc"方式引入并不会在打包的时候解析,导致开发环境可以正常引......
  • vue中使用wangeditor
    项目中用到了富文本框,选来选去选择了wangeditor,先写了demo,用起来还算比较简单用法安装npminstall@wangeditor/editor--savenpminstall@wangeditor/editor-for-vu......
  • 使用 fdisk 工具製作一個2個分區的鏡像文件
    fdisk是一个用于磁盘分区的命令行工具,可以用来创建、删除、编辑、查看磁盘分区表。在Linux系统中,它是一个非常常用的工具。 以下是一些常用的fdisk命令:......
  • 【Git】git设置代理
    在大陆访问github等网络非常不稳定,中途各种错误断开造成克隆项目失败,可以尝试设置代理解决(前提是得有代理,这里起的作用只是让git操作走代理路径,但是如果代理路径本身就不存......
  • 如何更改Dolibarr服务的默认端口号
    Dolibarr是一个ERP管理系统软件。默认是80端口,如果需要改成其它端口,如8080,那么:1.修改apache2的两个配置文件:/etc/apache2/ports.conf,  /etc/apache2/sites-enabled/0......
  • 打擂台
    nums1=[1,2,4,6,8]nums2=[3,5,7,10,12,15,23]#res=[]#whilenums1andnums2:#ifnums1[0]<nums2[0]:#res.append(nums1.pop(0))......
  • pandas.DataFrame.shape-返回表示DataFrame维度的元组
    importpandasaspdd1=[[3,"negative",2],[4,"negative",6],[11,"positive",0],[12,"positive",2]]df1=pd.DataFrame(d1,columns=["xuhao","result","value"])pr......
  • cnblogs 博客园自定义样式
    在博客园搜索资料时,发现很多博友的园子装饰的非常炫酷。想着也装饰一下自己的园子,搜索后发现一个不错的插件,记录一下。使用、配置教程:https://bndong.github.io/Cnblog......
  • Centos7配置本地及网络yum源
    开源镜像站:阿里云开源镜像站:https://mirrors.aliyun.com/网易开源镜像站:https://mirrors.163.com/中科大开源镜像站:https://mirrors.ustc.edu.cn/清华开源镜像站:http......
  • go-zero开发注意事项
    随着go-zero和相关依赖包版本的更新,以下注意事项里提到的规则可能会有所不同,请注意! 1.配置jwt时,AccessSecret的长度必须大于8位,否则报错2.同一个项目的不同模块间,配置A......