linux下的进程通讯

news2024/10/6 22:34:21

一. 实验内容

1.编写一个程序,实现在两个进程之间运用管道进行通讯。程序中创建一个子进程,然后父、子进程各自独立运行。父进程不断地在标准输入设备上读入小写字母,写入管道。子进程不断地从管道中读取字符,转换为大写字母后输出到标准输出设备上。当读到x时,结束。

2.  观察程序输出的结果,并做出合理的解释。

相关的系统调用或函数:fork()  pipe()  write()   read();

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<unistd.h>

#include<sys/types.h>

int main(void)

{

  int result=-1;

  int fd[2];

  int nbytes;

  pid_t pid;

  char string[100];

  char readbuffer[1000];

  int *read_fd=&fd[0];

  int *write_fd=&fd[1];

  //建立管道

  result=pipe(fd);

  if(-1==result)

  {

    printf("fail to create pipe\n");

    return -1;

  }

  pid=fork();

  if(-1==pid)

  {

    printf("fail to fork\n");

    return -1;

  }

  if(0==pid)   //子进程

  {int i=0;

    close(*read_fd);

scanf("%c",&string[0]);

while(string[i]!='x')

    {

i++;

scanf("%c",&string[i]);

       }

result=write(*write_fd,string ,strlen(string));

    return 0;

  }

  else{        //父进程

    close(*write_fd);

    nbytes=read(*read_fd,readbuffer,sizeof(readbuffer));

printf("the parent receive data:");

for(int i=0;readbuffer[i]!='x';i++)

{

readbuffer[i]=readbuffer[i]+'A'-'a';

printf("%c ",readbuffer[i]);

}

   

  }

  return 0;

}

1.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1832784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【工程2区】毕业神刊 —— 1-2个月录用!非黑!非预警!

【欧亚科睿学术】 电力能源类SCIE ✅ 进展超顺 ✅ 录用率高 ✅ 领域相关均可 【期刊简介】IF&#xff1a;1.0-2.0&#xff0c;JCR2区&#xff0c;中科院4区 【版面类型】正刊&#xff0c;仅少量版面 【终审周期】走期刊部系统&#xff0c;预计3个月左右录用 【检索情况…

中电金信:银行业数据中心何去何从

20多年前&#xff0c;计算机走进国内大众视野&#xff0c;计算机行业迎来在国内的高速发展时代。银行业是最早使用计算机的行业之一&#xff0c;也是计算机技术应用最广泛、最深入的行业之一。近年来&#xff0c;随着银行竞争加剧&#xff0c;科技如何引领业务、金融科技如何发…

高端品牌网站建设

随着互联网的快速发展&#xff0c;越来越多的企业开始意识到高端品牌网站建设对于企业发展的重要性。高端品牌网站建设不仅是企业形象展示的窗口&#xff0c;更是与消费者进行有效沟通和互动的桥梁。下面从设计、内容和用户体验三个方面&#xff0c;探讨高端品牌网站建设的重要…

板凳----Linux/Unix 系统编程手册 25章 进程的终止

25.1 进程的终止&#xff1a;_exit()和exit() 440 1. _exit(int status)&#xff0c; status 定义了终止状态&#xff0c;父进程可调用 wait 获取。仅低8位可用&#xff0c;调用 _exit() 总是成功的。 2.程序一般不会调用 _exit()&#xff0c; 而是调用库函数 exit()。exit() …

图片的大小如何改变?有效率改图片大小的方法

图片怎么将改变图片大小呢&#xff1f;现在经常在使用图片的时候需要先按照上传平台的要求来修改尺寸和大小&#xff0c;将图片调整到满足使用的大小之后然后上传使用。那么如何在线改变图片大小呢&#xff0c;有一个很简单的方法能够快速在线改图片大小&#xff0c;今天小编将…

垃圾回收管理系统设计

一、引言 随着城市化进程的加快&#xff0c;垃圾处理问题日益凸显。为了有效管理垃圾回收&#xff0c;提高资源利用效率&#xff0c;降低环境污染&#xff0c;本文设计了一套垃圾回收管理系统。该系统涵盖了数据收集与分析、智能监测与识别、资源调配与协调、用户参与与反馈、…

天锐绿盾加密软件,它的适用范围是什么?

天锐绿盾数据防泄密软件的适用范围广泛&#xff0c;主要可以归纳为以下几点&#xff1a; 行业适用性&#xff1a; 适用于各个行业&#xff0c;包括但不限于制造业、设计行业、软件开发、金融服务等&#xff0c;特别是对数据安全性要求较高的行业。企业规模与类型&#xff1a; 适…

氧化铈稳定氧化锆(Ce-TZP)性能优成本低 市场发展潜力较大

氧化铈稳定氧化锆&#xff08;Ce-TZP&#xff09;性能优成本低 市场发展潜力较大 CeO2稳定ZrO2&#xff0c;氧化铈稳定氧化锆&#xff0c;英文缩写Ce-TZP&#xff0c;一种陶瓷材料&#xff0c;是以氧化锆为基体&#xff0c;以氧化铈为稳定剂&#xff0c;制造而成的增韧陶瓷。 氧…

49.Chome浏览器有三种清缓存方式

49.Chome浏览器有三种清缓存方式&#xff1a;正常重新加载、硬件重新加载、清空缓存并硬性重新加载 1、【正常重新加载】 触发方式&#xff1a;①F5  ②CtrlR  ③在地址栏上回车  ④点击链接 如果缓存不过期会使用缓存。这样浏览器可以避免重新下载JavaScript文件、图像、…

太速科技-基于XCVU9P+ C6678的100G光纤的加速卡

基于XCVU9P C6678的100G光纤的加速卡 一、板卡概述 二、技术指标 • 板卡为自定义结构&#xff0c;板卡大小332mmx260mm; • FPGA采用Xilinx Virtex UltralSCALE 系列芯片 XCVU9P; • FPGA挂载4组FMC HPC 连接器; • 板载4路QSPF&#xff0c;每路数据速…

【Redis实战篇】redis的擅长实现的功能

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;小林同学的专栏&#xff1a;JAVA之基础专栏 【Redis实战篇】Redis有可能出现的问题以及如何解决问题_redis实现用户登录可能造成哪些问题-CSDN博客 本文接上面的文章 目录 2.优惠券秒杀 2.1 全局唯一ID 2.…

别再问别人了,这是小白都能懂的拓扑图指南

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 上午好&#xff0c;我的网工朋友。 老杨的网工交流群里经常会有这种现象&#xff1a; 一群小伙伴在问各类型拓扑图的问题&#xff0c;怎么设计&…

全球AI新闻速递6.17

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

Drake 机器人仿真

sudo apt-get install&#xff0c;pip3 install&#xff0c;sudo apt install这些命令是在Linux系统中用于安装软件包或Python库的不同方法&#xff0c;它们分别属于不同的包管理系统和工具。 sudo apt-get install&#xff1a; 这是在Debian、Ubuntu等基于Debian的系统上用于从…

Excel加密怎么设置?这5个方法不容错过!(2024总结)

Excel加密怎么设置&#xff1f;如何不让别人未经允许查看我的excel文件&#xff1f;如果您也有这些疑问&#xff0c;那么千万不要错过本篇文章了。今天小编将向大家分享excel加密的5个简单方法&#xff0c;保证任何人都可以轻松掌握&#xff01;毫无疑问的是&#xff0c;为Exce…

智能穿梭,无缝连接:迈威通信助力AGV智慧物流系统高效运转

随着智能制造模式的兴起&#xff0c;在工业4.0和“中国制造2025”的推动下&#xff0c;智能物流迎来了重大的发展机遇。AGV作为智慧仓储物流系统的“关键角色”之一&#xff0c;通过联系、调节离散型物流管理系统&#xff0c;使各环节有效地衔接起来&#xff0c;实现全厂物流运…

综述:光学测量技术趋势

欢迎关注&#xff1a;GZH《光场视觉》 光学计量学是当今制造业的关键技术之一。它通常可以被定义为用光进行测量的科学&#xff0c;被广泛用于评估产品&#xff08;或其某些部件或组件&#xff09;的物理特性&#xff0c;以及监测大型基础设施和设备。据麦姆斯咨询报道&#x…

FinalShell 连接虚拟机超时,主机ping不通虚拟机,解决

出现问题&#xff1a; 连接主机...java.net.ConnectException: Connection timed out: connect 在排查错误时发现&#xff1a; 虚拟机内能互相ping通&#xff0c;虚拟机能ping通主机 但是主机的cmd命令ping不通虚拟机 问题原因&#xff1a; 虚拟机内能互相ping通&#xff0…

OSPF协议详解(二)

OSPF邻接关系建立流程 路由器在开启OSPF协议后先进入Down状态&#xff0c;此时路由器还未收到网络中其他路由器发送的Hello报文。 当路由器收到了其他路由器发送的Hello报文时&#xff0c;状态转发Init&#xff0c;当发来的Hello报文中有自己的Router ID时&#xff0c;状态转…

产品应用 | 小盒子跑大模型!英码科技基于算能BM1684X平台实现大模型私有化部署

当前&#xff0c;在人工智能领域&#xff0c;大模型在丰富人工智能应用场景中扮演着重要的角色&#xff0c;经过不断的探索&#xff0c;大模型进入到落地的阶段。而大模型在落地过程中面临两大关键难题&#xff1a;对庞大计算资源的需求和对数据隐私与安全的考量。为应对这些挑…