首页 > 系统相关 >有名管道:实现无亲缘关系进程间的通信

有名管道:实现无亲缘关系进程间的通信

时间:2024-07-09 19:56:10浏览次数:17  
标签:int 亲缘 write mkfifo 管道 有名 fd myfifo include

有名管道的基本概念:

具体操作例程:

vi mkfifo.c   编辑下列代码:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
  int ret;
  int fd;
  int nread;
  char readbuff[50]={0};
  ret = mkfifo("./myfifo",0755);
  if(ret == -1)
  {
     printf("create mkfifo failed !\n");
     return -1;
  }
  printf("create myfifo success !\n");
  fd = open("./myfifo",O_RDONLY);
  if(fd<0)
  {
     return -1;
  }
  printf("open file success !\n");
  nread = read("fd,readbuff,50"); //readbuff用来存放读取到的从另一个进程的写进有名管道中的内容
  printf("read %d byte from file,content:%s\n",nread,readbuff);
  close(fd);
  return 0;
}

 ps:圈出来的就是生成的管道文件,两无亲缘关系的进程通过此文件进行读写通信,本文中的读进程就是上述的mkfifo.c

另一个进程write.c如下

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main()
{
  int fd;
  char *str="hello world";//将hello world写进通道里
  fd = open("./myfifo",O_WRONLY);
  if(fd<0)
  {
    return -1;
  }
  printf("open file success !\n");
  write(fd,str,strlen(str));
  close(fd);
  return 0;
}

编译两个进程:

gcc mkfifo.c -o read

gcc write.c -o write

在终端中首先运行./read,再打开另一个终端运行./write   得到如下结果

 结果表明:能在read进程中读取到write进程中的内容!

标签:int,亲缘,write,mkfifo,管道,有名,fd,myfifo,include
From: https://blog.csdn.net/m0_57257049/article/details/140299900

相关文章

  • Franka Robot 机器人状态专有名词解释
    O_T_EE:末端执行器(EndEffector)在Base坐标系中的位姿。O_T_EE_c:最新指令的末端执行器(EE)在Base坐标系中的位姿。O_T_EE_d:期望末端执行器(EE)在Base坐标系中的位姿。F_T_EE:末端执行器在法兰坐标(flangeframe)中的位姿,一般中间会间隔一个标称末端执行器坐标系,实际安装......
  • windows USB 设备驱动开发- USB管道的通讯(一)
    WindowsWDF框架提供一个名为连续读取器的专用对象。此对象使USB客户端驱动程序能够连续读取批量和中断终结点中的数据,只要有数据可用。若要使用读取器,客户端驱动程序必须具有与驱动程序从中读取数据的终结点关联的USB目标管道对象的句柄。终结点必须位于活动配置中。......
  • Redis 7.x 系列【19】管道
    有道无术,术尚可求,有术无道,止于术。本系列Redis版本7.2.5源码地址:https://gitee.com/pearl-organization/study-redis-demo文章目录1.往返时间2.管道技术3.代码演示4.其他批处理4.1原生批处理命令4.2事务4.3脚本1.往返时间官方文档Redis是一种基......
  • IO进程间通信-无名管道、有名管道
    1.无名管道1.1特点(1)只能用于具有亲缘关系的进程之间的通信(2)半双工的通信模式,具有固定的读端fd[0]和写端fd[1].(3)管道可以看成是一种特殊的文件,对于他的读写可以使用文件IO,如read,write。(4)管道是基于文件描述符的通信方式。当一个管道建立时,他会创建两个描述符fd[0],fd[1],......
  • MES-ERP系统专有名词汇总
    ECO:(EngineerChangeOrder)工程改动单。当发现工程资料有问题时,工程部发出的变更指令。ECR:(EngineerChangeRequest)工程变更需求。当发现工程资料有问题时生产部门等向工程发出的资料变更请求。当工程部同意后,工程部会发出ECO同意变更。PCN:(ProcessChangeNotific......
  • 论文中专有名词的缩写是全文给出一次全称后即可,还是每个章节都应该出全称和缩写
    在学术论文中,专有名词的缩写通常是全文给出一次全称后即可,之后的内容中只使用缩写。这是为了避免重复和冗长,使文章更加简洁和易读。然而,有一些细节和例外情况需要注意:一般规则首次出现时给出全称和缩写:在文章的首次出现某个专有名词时,先写出全称,然后在括号中给出缩写。之后的......
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇&入口差异&切换上线&IPC管道&AT&SC任务
    红队内网攻防渗透1.内网横向移动1.1横向移动入口知识点1.1.1、当前被控机处于域内还是域外1.1.1.1在域内1.1.1.2不在域内1.1.1.2.1第一种方法提权到system权限1.1.1.2.2第二种方法切换用户上线1.1.1.2.3kerbrute枚举用户1.1.2、当前凭据为明......
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇&入口切换&SMB共享&WMI管道&DCOM组件&I
    红队内网攻防渗透1.内网横向移动1.1WMI进行横向移动1.1.1利用条件:1.1.1利用详情1.1.1.1wmic1.1.1.1.1正向shell上线1.1.1.1.2反向shell上线1.1.1.2cscript(不建议使用)1.1.1.3wmiexec-impacket1.1.1.4cs插件1.2SMB横向移动1.2.1利......
  • 虚拟环境 反向解析,有名分组和无名分组的反向解析,路由分发,名称空间,虚拟环境,路径
    Ⅰ反向解析【一】基础的URL配置在实际的Django项目中,经常需要获取某个具体对象的URL,为生成的内容配置URL链接。比如,我要在页面上展示一列文章列表,每个条目都是个超级链接,点击就进入该文章的详细页面。现在我们的urlconf是这么配置的:path('post/<int:pk>/',views.some_view)......
  • Django链接数据库,ORM迁移数据库,ORM操作之数据操作,Django框架之生命周期流程图,Djan
    ⅠDjango链接数据库默认的Django数据库是sqlite3链接MySQL数据库--->电脑上则会运行MySQL【一】下载数据库【二】在settings.py设置定义参数#链接MySQL数据库DATABASES={'default':{#指定我们使用的引擎是mysql数据库的引擎'ENGINE':'......