#include "include/apue.h"

static int pfd1[2], pfd2[2];

void  TELL_WAIT(void)
{
    //创建管道
    if (pipe(pfd1) < 0 || pipe(pfd2) < 0)
        err_sys("pipe error");
}

void TELL_PARENT(pid_t  pid)
{
    //把数据写进pfd2管道(写端-标准输出)
    if (write(pfd2[1], "c", 1) != 1)
        err_sys("write  error");
}

void WAIT_PARENT(void)
{
    char c;
    //从pfd1管道(读端-标准输入)中读数据
    if (read(pfd1[0], &c, 1) != 1)
        err_sys("read error");
          
    if (c != 'p')
        err_quit("WAIT_PARENT:incorrect data");
}

void  TELL_CHILD(pid_t  pid)
{
    if (write(pfd1[1], "p", 1) != 1)
        err_sys("write error");
}

void WAIT_CHILD(void)
{  
    char c;

if (read(pfd2[0], &c, 1) != 1)
        err_sys("read error");
    if ( c != 'c' )
        err_quit("WAIT_CHILD: incorrent data");
}

int main()
{
    pid_t pid;

TELL_WAIT();
    if ((pid = fork()) < 0)
    {
        err_sys("fork error!");
    }
    else if (pid == 0)
    {
        TELL_PARENT(getpid());
        WAIT_PARENT();
        printf ("2222222222\n");
    }
    else
    {
        TELL_CHILD(pid);
        WAIT_CHILD();
        printf ("1111111111\n");
    }

return 0;
}

执行结果:

2222222222

11111111111

C 控制父、子进程的先后顺序执行相关推荐

  1. 树莓派小车教程(三)之——初步实现网页控制小车速度可调(顺序执行)

    项目场景: 之前写了一篇手把手树莓派小车教程(二)之--基于Tornado框架的网页控制小车(按键+鼠标点击).当时只记录了如何通过Tornado框架能让网页控制小车跑起来(以恒定速度),但是项目中小 ...

  2. python如何控制程序的运行顺序_Python流程控制-1 顺序执行

    流程控制指的是代码运行逻辑.分支走向.循环控制,是真正体现我们程序执行顺序的操作.流程控制一般分为顺序执行.条件判断和循环控制. 顺序执行 Python代码在执行过程中,遵循下面的基本原则: 普通语句 ...

  3. Java中控制多线程顺序执行

    Java中控制多线程顺序执行 一.概述 二.普通示例 三.控制示例 3.1.设置线程优先级 3.2.使用线程类的join() 3.2.1.在主线程join() 3.2.2.在子线程join() 3.3 ...

  4. jmeter 线程执行顺序_面试官让我说出8种线程顺序执行的方法!我懵了

    https://www.cnblogs.com/wenjunwei/p/10573289.html 一.前言 本文使用了8种方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中许多常用的方法,不止 ...

  5. 面试官:线程顺序执行,这么多答案你都答不上来?

    前言:最近在面试过程中,发现一些面高程的朋友连怎么实现线程顺序执行都答不上来,特分享相关文章,以作科普,有收获帮忙点个在看,感谢,助中秋快乐! 一.实现 本文使用了8种方法实现在多线程中让线程按顺序运 ...

  6. [转载] --- 让线程按顺序执行8种方法

    看到一篇比较用心的总结,涉及到很多知识点,转来保存,而且我把里面的每个方法都试了一遍,亲测没问题 此次转载,还新增了一些说明和结构 我的总结: 其实,让线程按顺序执行,其实就是一个让多线程强行串行化的 ...

  7. 让线程按顺序执行8种方法(转载)

    该文章为转载,出处:https://www.cnblogs.com/wenjunwei/p/10573289.html 一.前言 本文使用了7中方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中 ...

  8. 让线程按顺序执行 8 种方法

    作者:俊俊的小熊饼干 cnblogs.com/wenjunwei/p/10573289.html 一.前言 本文使用了8种方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中许多常用的方法,不止为 ...

  9. 按照顺序执行异步ajax的回调函数

    //按顺序执行多个ajax命令,因为数量不定,所以采用递归 function send(action, arg2) {//将多个命令按顺序封装成数组对象,递归执行//利用了deferred对象控制回调 ...

最新文章

  1. KubeEdge — Overview
  2. 一起学nRF51xx 21 -  蓝牙项目工程的初始化流程解读
  3. C++的三种容器适配器
  4. 2262: master(vector + dfs)
  5. 初试Octave软件
  6. [jQuery1.9]Cannot read property ‘msie’ of undefined错误的解决方法
  7. Intellij IDEA汉化教程
  8. 【Dart学习】-- Dart之匿名方法闭包
  9. 中国移动加快自主创新推动我国主导4G标准引领国际
  10. 腾达无线usb wifi 网卡u1/u3 RTL8192EU在centos7.6/7.7的编译适配
  11. 台式计算机用什么网卡,台式机没有网卡怎么办
  12. 怎样理解封装,继承,多态!三者的区别?
  13. 深入理解Java虚拟机读书笔记之垃圾收集器与内存分配策略
  14. 这些旅游类短视频账号在快手涨粉的总结
  15. oracle.简单查询、排序、限定查询、单行函数
  16. 中国式父母计算机科学家攻略,中国式家长攻略大全:全结局解锁技巧汇总[多图]...
  17. IT人理科男不懂浪漫?事实真的是这样吗?
  18. Vue项目大屏可视化适配 transform+解决高德地图经纬度偏移
  19. C++—— 数组名与向量名
  20. 冰蝎利用免杀webshell链接,反弹shell(附免杀webshell和工具)

热门文章

  1. 为啥我的Python这么慢 (一)
  2. 2.1基本算法之枚举_1749数字方格
  3. matlab调用sh函数,Shell 函数定义与调用
  4. python如何用色度表示数值大小_python中色度通道的YUV子采样
  5. 【ES6(2015)】Generator
  6. Python笔记-UiSelector坐标定位
  7. Python工作笔记-使用Py遍历文件夹及其子文件夹内容
  8. C++|Qt工作笔记-对explicit的认识(Qt中一般情况下为什么会自动加上这个关键字)
  9. 阿里云服务器CentOS6.8安装JDK
  10. java简单编程_「4」Java简单编程