父子进程共享打开的文件描述符------使用文件完成进程间通信.

/*** fork_share_fd.c***/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/wait.h>int main(void)
{int fd1, fd2; pid_t pid;char buf[1024];char *str = "---------test for shared fd in parent child process-----\n";pid = fork();if (pid < 0) {perror("fork error");exit(1);} else if (pid == 0) {fd1 = open("test.txt", O_RDWR);if (fd1 < 0) {perror("open error");exit(1);}write(fd1, str, strlen(str));printf("child wrote over...\n");} else {fd2 = open("test.txt", O_RDWR);if (fd2 < 0) {perror("open error");exit(1);}sleep(1);                   //保证子进程写入数据int len = read(fd2, buf, sizeof(buf));write(STDOUT_FILENO, buf, len);wait(NULL);}return 0;
}

运行结果:

ubuntu1604@ubuntu:~/wangqinghe/linux/20190806$ ./fork_share_fd

child wrote over...

---------test for shared fd in parent child process-----

转载于:https://www.cnblogs.com/wanghao-boke/p/11311730.html

Linux进程通信之文件相关推荐

  1. Linux进程通信的四种方式——共享内存、信号量、无名管道、消息队列|实验、代码、分析、总结

    Linux进程通信的四种方式--共享内存.信号量.无名管道.消息队列|实验.代码.分析.总结 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须 ...

  2. linux进程管道通信缺点,Linux进程通信(IPC)的方式详解

    前言:Linux进程通信的方式 什么是进程通信?进程通信是指进程之间交换信息 进程通信方式共有6种: 管道(pipe),包括流管道(s_pipe)和有名管道(named pipe) 信号(signal ...

  3. Linux进程通信——匿名管道、命名管道、管道的特性和共享内存

    Linux进程通信--匿名管道.命名管道.管道的特性和共享内存 一.管道 1.1 什么是管道? 1.2 匿名管道 <1> 匿名管道参数说明 <2> fork共享管道原理 < ...

  4. 【操作系统实验】Linux进程通信—共享内存通信、管道通信

    Linux进程通信-共享内存通信.管道通信 一.实验目的: 二.实验题目: 1. 试设计程序利用共享内存完成如下进程通信 1.shmget函数 2.shmat函数 3.shmdt函数 4.shmctl ...

  5. Linux进程通信的试验

    1.实验目的 1.1了解Linux进程通信的概念. 1.2 掌握Linux进程通信的常用方法. 2.实验内容 创建admin用户,密码也是admin. 用admin登陆后,创建src目录,所有的源代码 ...

  6. Linux进程通信中IPC对象——IPC_PRIVATE与ftok

    在linux中,可以使用IPC对象来进行进程间通信.IPC对象存在于内核中,多进程可以操作同一个IPC对象.每个IPC对象都有一个唯一的编号,该编号是由系统分配的.那么不同的进程如何知道这个编号,进而 ...

  7. linux一个进程通知另外一个进程,Linux进程通信学习笔记

    一.为什么需要进程通信 1)数据传输 一个进程需要把它的数据发送给另一个进程. 2)资源共享 多个进程之间共享同样的资源. 3)通知事件 一个进程向另外一个进程发送消息,通知它发生了某事件. 4)进程 ...

  8. linux 进程通信比较,浅析Linux进程通信的几种方式及其比较

    摘要:本文通过对Linux下几种主要通信方式进行概述,并结合Linux系统的系统调用对OS中的实现进行简要概述,并对其优缺点进行分析,阐述了在不同通信情况下应该选择何种通信方式进行选择. 关键词:Li ...

  9. linux 进程通信之 mmap

    一,管道PIPE 二,FIFO通信 三,mmap通信 创建内存映射区. #include <sys/mman.h> void *mmap(void *addr, size_t length ...

最新文章

  1. window 桌面开发_C#桌面开发的未来WebWindow
  2. java创建对象的过程_Java创建对象的过程
  3. “雪崩”崩了 欧洲国际刑警组织捣毁大规模恶意软件管理平台
  4. Object defineProperty
  5. Leetcode每日一题:1025.divisor-game(除数博弈)
  6. html5中checkbox的选中状态的设置与获取
  7. Mysql大量插入随机数据方法--存储过程
  8. sql server 2008导出数据至Excel或者wps
  9. mybatisplus-代码级别的自动生成创建丶更新时间
  10. vue拖动滑块验证组件
  11. 一种在外部中心化基础下的网络空间去中心化充盈区块链系统
  12. tuts4you 注册_设计和开发完整的网站(Tuts + Mini系列,第3页)
  13. 植树问题(python)
  14. matlab中pwelch函数计算功率谱密度
  15. 欧氏距离,马氏距离(转载)
  16. 《程序员的自我修养-链接-装载与库》第三章 目标文件里有什么(1)
  17. Win32设置静态文本和按钮颜色、字体
  18. USB product id / vendor id 对应厂商查询
  19. 二刷剑指Offer:剑指Offer+LeetCode(全53题)
  20. 解决Could not find executable valgrind问题

热门文章

  1. coursera 《现代操作系统》 -- 第五周 同步机制(1)
  2. css cursor url用法格式详解
  3. Mercurial hg web server的配置
  4. config.cfg.php,PHP:使用给定的结构获取变量形式的config.cfg
  5. java 加密解密编程,java 加密解密容易实现
  6. html文件转换html格式,pdf文件怎么转换成html格式
  7. 算法—巧排扑克牌(C语言)
  8. python读取文本文件的三种方法
  9. 160 - 37 CyberBlade.1
  10. java 方法 示例_Java集合syncedSet()方法与示例