进程通信实例之父子进程通信
参考
/* 父子进程通信范例 */
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <error.h>#define SIZE 1024int main()
{int shmid;char *shmaddr;struct shmid_ds buf; /* 结构体定义 */int flag = 0;int pid;shmid = shmget (IPC_PRIVATE, SIZE, IPC_CREAT | 0600); /* 创建一个共享内存对象,* 后面有删除的对应 * 还有一个功能是得到一个共享内存标识符*/if ( shmid < 0 ){perror("get shm ipc_id error");return -1;}pid = fork ();if ( 0 == pid ){shmaddr = (char *) shmat (shmid, NULL, 0); /* 把共享内存区对象映射到调用进程的地址空间,后面有删除的对应 */if (-1 == (int) shmaddr){perror ("shmat addr error") ;return -1;}strncpy (shmaddr, "Hi, I am child process!\n", SIZE - 1);shmaddr[SIZE - 1] = '\0';shmdt (shmaddr); /* 断开共享内存连接,对应shmat() */return 0;} else if (pid > 0) {sleep(3);flag = shmctl (shmid, IPC_STAT, &buf); /* 完成对共享内存的控制,* 这里是得到共享内存的状态,* 还有改变共享内存状态和删除共享内存*/if (-1 == flag){perror ("shmctl shm error");return -1;}/* 注意分析下面的结果输出 */printf ("shm_segsz =%d bytes\n", buf.shm_segsz);printf ("parent pid=%d, shm_cpid = %d \n", getpid(), buf.shm_cpid);printf ("chlid pid=%d, shm_lpid = %d \n", pid, buf.shm_lpid);shmaddr = (char *) shmat (shmid, NULL, 0 ); /* 把共享内存区对象映射到调用进程的地址空间,对应shmdt() */if (-1 == (int) shmaddr){perror ("shmat addr error") ;return -1 ;}printf ("%s", shmaddr);shmdt (shmaddr); /* 断开共享内存连接,对应shmat() */shmctl (shmid, IPC_RMID, NULL); /* 共享内存管理,删除共享内存,对应shmget的【创建】 */}else{perror ("fork error");shmctl (shmid, IPC_RMID, NULL); /* 共享内存管理,删除共享内存 */}return 0;
}
进程通信实例之父子进程通信相关推荐
- 子组件调用父组件方法_vue父子组件通信以及非父子组件通信的方法
组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系,父子关系.兄弟关系和隔代关系,简化点可以分为父子关系和 ...
- vue父子组件通信以及非父子组件通信的方法
组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系,父子关系.兄弟关系和隔代关系,简化点可以分为父子关系和 ...
- linux shell 脚本 父子进程 等待子进程,SHELL父子进程分析
导言 本节将就shell交互(脚本执行)过程中涉及子进程(subprocess)以及子SHELL(subshell)的部分,配以实例,进行说明.将详细讨论如下问题:subprocess和subshel ...
- Vue 学习06——Vue父子组件通信、非父子组件通信1
目录 ㋀㋊ ✎ 父子组件间通信(Communication) ◆ 组件间通信 父组件向子组件传递数据 ➬ ① 前言 ② demo ➬ 还有一种形式叫做插槽 ◆ 子组件向父组件传递数据 ① 前言 ② ...
- Linux进程全解5——父子进程对文件的操作
以下内容源于朱有鹏<物联网大讲堂>的课程学习,如有侵权,请告知删除. 1.子进程继承父进程中打开的文件 (1)上下文:父进程先用open打开一个文件得到fd,然后再fork创建子进程,之后 ...
- 笔记2:VC++ socket通信实例
VC++ socket通信实例 网络中进程之间如何通信 首要解决的问题是如何唯一标识一个进程,在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们 ...
- vue父子组件通信,兄弟组件通信
目录 一.父子组件通信 1.子组件通过 props 获取父组件变量和父组件调用子组件中的方法(这两个都是父传子的思想) a:子组件通过 props 获取父组件变量 b:父组件调用子组件中的方法 2.父 ...
- 【Linux】进程概念——父子进程、僵尸进程和孤儿进程
目录 父子进程 什么是父子进程? ==父子进程特性== 为什么有父子进程? 僵尸进程(defunct进程) 什么是僵尸进程? 僵尸进程的底层原因 僵尸进程的危害与解决方法 孤儿进程 什么是孤儿进程? ...
- 2进程之间的关系:进程组,会话,守护进程
1进程组 一个或多个进程的集合,进程组ID是一个正整数.用来获得当前进程组ID的函数. pid_t getpgid(pid_t pid) pid_t getpgrp(void) 获得父子进程进程 ...
最新文章
- c语言两种加法,两个超长正整数的加法
- 在Eclipse中有效使用JUnit
- C语言“悬空指针”和“野指针”究竟是什么意思?
- spring boot redis 分布式锁
- Java第五次作业--面向对象高级特性(抽象类和接口)
- 同济大学土木工程学院招收2名秋季入学全日制博士生
- PHP key() 函数
- linux中删除文件名称乱码
- Android设为系统默认的短信应用
- c语言dfs算法,DFS算法源程序
- RocketMQ安装使用
- 如何使用google进行搜索
- 深入浅出WPF(一)
- 手机内置摄像头接线图解_1000以下手机哪款好?8款千元以内性价比最高的手机推荐...
- 如何将桌面上的qlv格式转换成mp4视频
- WEEK5 周记 作业——差分数组_TT的魔法猫
- 华硕主板固态硬盘不识别_[主板] 开机后无法识别硬盘或SSD的故障排除方式
- skynet框架应用 (十四) 登录服务
- 高校社团管理系统java_高校社团管理系统设计及实现.doc
- 2020 杭电多校5 1007、1008、1011