Linux进程通信之文件
父子进程共享打开的文件描述符------使用文件完成进程间通信.
/*** 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进程通信之文件相关推荐
- Linux进程通信的四种方式——共享内存、信号量、无名管道、消息队列|实验、代码、分析、总结
Linux进程通信的四种方式--共享内存.信号量.无名管道.消息队列|实验.代码.分析.总结 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须 ...
- linux进程管道通信缺点,Linux进程通信(IPC)的方式详解
前言:Linux进程通信的方式 什么是进程通信?进程通信是指进程之间交换信息 进程通信方式共有6种: 管道(pipe),包括流管道(s_pipe)和有名管道(named pipe) 信号(signal ...
- Linux进程通信——匿名管道、命名管道、管道的特性和共享内存
Linux进程通信--匿名管道.命名管道.管道的特性和共享内存 一.管道 1.1 什么是管道? 1.2 匿名管道 <1> 匿名管道参数说明 <2> fork共享管道原理 < ...
- 【操作系统实验】Linux进程通信—共享内存通信、管道通信
Linux进程通信-共享内存通信.管道通信 一.实验目的: 二.实验题目: 1. 试设计程序利用共享内存完成如下进程通信 1.shmget函数 2.shmat函数 3.shmdt函数 4.shmctl ...
- Linux进程通信的试验
1.实验目的 1.1了解Linux进程通信的概念. 1.2 掌握Linux进程通信的常用方法. 2.实验内容 创建admin用户,密码也是admin. 用admin登陆后,创建src目录,所有的源代码 ...
- Linux进程通信中IPC对象——IPC_PRIVATE与ftok
在linux中,可以使用IPC对象来进行进程间通信.IPC对象存在于内核中,多进程可以操作同一个IPC对象.每个IPC对象都有一个唯一的编号,该编号是由系统分配的.那么不同的进程如何知道这个编号,进而 ...
- linux一个进程通知另外一个进程,Linux进程通信学习笔记
一.为什么需要进程通信 1)数据传输 一个进程需要把它的数据发送给另一个进程. 2)资源共享 多个进程之间共享同样的资源. 3)通知事件 一个进程向另外一个进程发送消息,通知它发生了某事件. 4)进程 ...
- linux 进程通信比较,浅析Linux进程通信的几种方式及其比较
摘要:本文通过对Linux下几种主要通信方式进行概述,并结合Linux系统的系统调用对OS中的实现进行简要概述,并对其优缺点进行分析,阐述了在不同通信情况下应该选择何种通信方式进行选择. 关键词:Li ...
- linux 进程通信之 mmap
一,管道PIPE 二,FIFO通信 三,mmap通信 创建内存映射区. #include <sys/mman.h> void *mmap(void *addr, size_t length ...
最新文章
- window 桌面开发_C#桌面开发的未来WebWindow
- java创建对象的过程_Java创建对象的过程
- “雪崩”崩了 欧洲国际刑警组织捣毁大规模恶意软件管理平台
- Object defineProperty
- Leetcode每日一题:1025.divisor-game(除数博弈)
- html5中checkbox的选中状态的设置与获取
- Mysql大量插入随机数据方法--存储过程
- sql server 2008导出数据至Excel或者wps
- mybatisplus-代码级别的自动生成创建丶更新时间
- vue拖动滑块验证组件
- 一种在外部中心化基础下的网络空间去中心化充盈区块链系统
- tuts4you 注册_设计和开发完整的网站(Tuts + Mini系列,第3页)
- 植树问题(python)
- matlab中pwelch函数计算功率谱密度
- 欧氏距离,马氏距离(转载)
- 《程序员的自我修养-链接-装载与库》第三章 目标文件里有什么(1)
- Win32设置静态文本和按钮颜色、字体
- USB product id / vendor id 对应厂商查询
- 二刷剑指Offer:剑指Offer+LeetCode(全53题)
- 解决Could not find executable valgrind问题
热门文章
- coursera 《现代操作系统》 -- 第五周 同步机制(1)
- css cursor url用法格式详解
- Mercurial hg web server的配置
- config.cfg.php,PHP:使用给定的结构获取变量形式的config.cfg
- java 加密解密编程,java 加密解密容易实现
- html文件转换html格式,pdf文件怎么转换成html格式
- 算法—巧排扑克牌(C语言)
- python读取文本文件的三种方法
- 160 - 37 CyberBlade.1
- java 方法 示例_Java集合syncedSet()方法与示例