【问题描述】

使用C语言实现下述要求的程序:

1.对于text.txt文件,子进程将字符串“something communication”写入text.txt,父进程读取text.txt文件内容打印。

【程序代码】

#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/wait.h>void main(){printf("parent process is running.\n");int res;char buf_wr[] = " something communication ";char buf_rd[sizeof(buf_wr)];buf_rd[0] = '\0';int fd = open("/tmp/text.txt", O_RDWR | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);if(fd < 0){printf("error: open file:/tmp/text.txt failed.\n");exit(EXIT_FAILURE);}pid_t pid = fork();switch(pid){case 0:// 子进程printf("child process is running.\n");res = write(fd, buf_wr, sizeof(buf_wr));if(res != sizeof(buf_wr)){printf("error: child process write failed.\n");exit(EXIT_FAILURE);}close(fd); // 子进程先关闭自己的文件描述符printf("child process was done.\n");exit(0);case -1:// errorexit(EXIT_FAILURE);default:// 父进程// 父进程等待子进程终止wait(0);// 设置文件的‘读写位置’,使其偏移到子进程执行写入操作时的位置lseek(fd, 0 - sizeof(buf_wr), SEEK_CUR);res = read(fd, buf_rd, sizeof(buf_wr));if(res == 0){// EOFprintf("EOF\n");}else if(res > 0){printf("parent process was done. readed string is '%s'\n", buf_rd);}else{// errorprintf("error: parent process read failed.\n");exit(EXIT_FAILURE);}close(fd);exit(EXIT_SUCCESS);}
}

【程序运行结果】

linux进程间通信练习:对于text.txt文件,子进程将字符串“something communication”写入text.txt,父进程读取text.txt文件内容并打印。相关推荐

  1. 创建一个子进程,子进程向无名管道中写入数据,父进程打印输出。

    /*===============================================  *   文件名称:pipe.c  *   创 建 者:       *   创建日期:2022年0 ...

  2. java读取一个应用程序_Java IO – 在写入其他应用程序时读取一个大文件

    我想使用java来读取weblogic日志文件,而weblogic正在将日志写入其中(缓冲),但我只想读取内容,当我开始阅读它时. 我怎样才能做到这一点 ? public class DemoRead ...

  3. java读取rvt文件数据_Revit二次开发之隐藏API 独立进程读取rvt文件

    在项目中需要读取rvt文件,但是因为该格式为非公开格式,其数据需要revit的支持,但批量读取不可能一个一个用revit软件去打开.不过该方法还是需要revit的依赖,速度比开软件快了知道多少 1.1 ...

  4. struts2无刷新图片(文件)上传 充分利用struts配置文件 自己只需要把读取到的文件写入文件系统就可以了...

    晚上写 转载于:https://www.cnblogs.com/yongde/p/3362845.html

  5. Linux —— 进程间通信

    目录 一.进程间通信的介绍 1.进程间通信的概念 2.进程间通信的目的 3.进程间通信的前提 4.进程间通信的分类 二.管道 三.匿名管道 1.基本原理 2.管道的创建步骤 1.pipe函数 2.代码 ...

  6. linux的子进程和父进程,[Linux进程]在父进程和子进程中分别对文件进行操作

    [Linux进程]在父进程和子进程中分别对文件进行操作 发布时间:2020-04-10 19:36:49 来源:51CTO 阅读:917 作者:银河星君 /*子进程和父进程同时对一个文件进行写操作导致 ...

  7. linux 进程间通信及makefile 无名管道/有名管道/共享内存/信号/消息队列

    http://www.voidcn.com/article/p-hxvuiypm-mr.html https://www.cnblogs.com/wuyida/archive/2013/02/03/6 ...

  8. 【Linux】Linux进程间通信——共享内存/消息队列/守护进程

    文章目录 进程间通信--共享内存/守护进程 一, 共享内存 1. 共享内存概念 2. 共享内存使用 1. 共享内存使用步骤 2. 共享内存操作函数 3. 共享内存常用操作命令 4. 共享内存使用示例: ...

  9. Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存

    Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存 参考:<linux编程从入门到精通>,<Linux C程序设计大全>,<unix环境高级编程> ...

  10. linux进程间通信快速入门【二】:共享内存编程(mmap、XSI、POSIX)

    文章目录 mmap内存共享映射 XSI共享内存 POSIX共享内存 参考 使用文件或管道进行进程间通信会有很多局限性,比如效率问题以及数据处理使用文件描述符而不如内存地址访问方便,于是多个进程以共享内 ...

最新文章

  1. SitemapBaiduspider
  2. 网页布局(div布局)
  3. 【数据处理】python数据清洗通用手法:缺失值处理
  4. java基础提升篇:深入浅出Java多线程
  5. 【重要】2022年有三AI实战课程讲师招募,只等你来!
  6. C语言 游戏远程call调用,关于远程注入游戏并调用 call 的问题
  7. 公共情报工具automater的基本使用
  8. Mongoose介绍和入门​​
  9. Python深度学习(Deep Learning with Python) 中文版+英文版+源代码
  10. spring提供的线程池
  11. python编辑excel文件_python自动化之修改excel(包括xls文件和xlsx文件)
  12. 关于Excel导入SQLServer的说明
  13. Mac读写ntfs磁盘工具:Paragon NTFS for Mac
  14. js校验 身份证号18位
  15. MATLAB实现光谱曲线包络线去除,附源代码
  16. java web ip_详解Java Web如何限制访问的IP的两种方法
  17. java英文参考文献_java英文参考文献
  18. 基于金鹰优化算法的函数寻优算法
  19. 用编译器写的mov ax,[0]指令,执行的实际上是mov ax,0
  20. 软文写作技巧:文字表达能力是关键

热门文章

  1. 11.RabbitMQ实战 --- 提升性能,保障安全
  2. 18.Argument replacement
  3. 59. 预定义超全局变量
  4. oracle 的数据库、表空间、表是什么关系
  5. 修改常见服务器的banner
  6. webpack 使用教程
  7. 测试:第二章 测试过程
  8. 结队编程与日程管理系统维护改善
  9. jQuery导入Eclipse后报错解决方法
  10. 编写一个成绩分类程序