参考

/* 父子进程通信范例 */
#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;
}

进程通信实例之父子进程通信相关推荐

  1. 子组件调用父组件方法_vue父子组件通信以及非父子组件通信的方法

    组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系,父子关系.兄弟关系和隔代关系,简化点可以分为父子关系和 ...

  2. vue父子组件通信以及非父子组件通信的方法

    组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系,父子关系.兄弟关系和隔代关系,简化点可以分为父子关系和 ...

  3. linux shell 脚本 父子进程 等待子进程,SHELL父子进程分析

    导言 本节将就shell交互(脚本执行)过程中涉及子进程(subprocess)以及子SHELL(subshell)的部分,配以实例,进行说明.将详细讨论如下问题:subprocess和subshel ...

  4. Vue 学习06——Vue父子组件通信、非父子组件通信1

    目录 ​㋀㋊ ✎ 父子组件间通信(Communication) ◆ 组件间通信 父组件向子组件传递数据 ➬  ① 前言 ② demo ➬ 还有一种形式叫做插槽 ◆ 子组件向父组件传递数据 ① 前言 ② ...

  5. Linux进程全解5——父子进程对文件的操作

    以下内容源于朱有鹏<物联网大讲堂>的课程学习,如有侵权,请告知删除. 1.子进程继承父进程中打开的文件 (1)上下文:父进程先用open打开一个文件得到fd,然后再fork创建子进程,之后 ...

  6. 笔记2:VC++ socket通信实例

    VC++ socket通信实例 网络中进程之间如何通信   首要解决的问题是如何唯一标识一个进程,在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们 ...

  7. vue父子组件通信,兄弟组件通信

    目录 一.父子组件通信 1.子组件通过 props 获取父组件变量和父组件调用子组件中的方法(这两个都是父传子的思想) a:子组件通过 props 获取父组件变量 b:父组件调用子组件中的方法 2.父 ...

  8. 【Linux】进程概念——父子进程、僵尸进程和孤儿进程

    目录 父子进程 什么是父子进程? ==父子进程特性== 为什么有父子进程? 僵尸进程(defunct进程) 什么是僵尸进程? 僵尸进程的底层原因 僵尸进程的危害与解决方法 孤儿进程 什么是孤儿进程? ...

  9. 2进程之间的关系:进程组,会话,守护进程

     1进程组 一个或多个进程的集合,进程组ID是一个正整数.用来获得当前进程组ID的函数. pid_t getpgid(pid_t pid) pid_t getpgrp(void) 获得父子进程进程 ...

最新文章

  1. c语言两种加法,两个超长正整数的加法
  2. 在Eclipse中有效使用JUnit
  3. C语言“悬空指针”和“野指针”究竟是什么意思?
  4. spring boot redis 分布式锁
  5. Java第五次作业--面向对象高级特性(抽象类和接口)
  6. 同济大学土木工程学院招收2名秋季入学全日制博士生
  7. PHP key() 函数
  8. linux中删除文件名称乱码
  9. Android设为系统默认的短信应用
  10. c语言dfs算法,DFS算法源程序
  11. RocketMQ安装使用
  12. 如何使用google进行搜索
  13. 深入浅出WPF(一)
  14. 手机内置摄像头接线图解_1000以下手机哪款好?8款千元以内性价比最高的手机推荐...
  15. 如何将桌面上的qlv格式转换成mp4视频
  16. WEEK5 周记 作业——差分数组_TT的魔法猫
  17. 华硕主板固态硬盘不识别_[主板] 开机后无法识别硬盘或SSD的故障排除方式
  18. skynet框架应用 (十四) 登录服务
  19. 高校社团管理系统java_高校社团管理系统设计及实现.doc
  20. 2020 杭电多校5 1007、1008、1011

热门文章

  1. java计算机毕业设计基于ssm的志愿者活动招募网站
  2. C语言程序设计|文件操作
  3. 热血江湖20.0单机版一键端带藏宝阁带GM工具网单游戏
  4. 机器学习之随机森林填补缺失值和众数填补缺失值
  5. UDF开发手册 - UDF
  6. SQLServer中常用的分页查询语句
  7. 模拟银行ATM存款存取款的相关功能
  8. 让单个单元格显示两个数据
  9. MATLAB中 DCT变换、DCT反变换、分块DCT变换
  10. set transaction