2019独角兽企业重金招聘Python工程师标准>>>

Head First C 第十章 进程间通信

创建进程只是个开始 如果你想控制运行中的进程,向进程发送数据读取它的输出,该怎么办?通过进程间通信,进程可以合力完成某件工作。

进程内部一瞥

进程含有它正在运行的程序,还有栈和堆数据空间。除此之外,进程还需要记录数据流的连向,比如标准输出连到了哪里(默认是屏幕btw)。进程用文件描述符表示数据流,所谓文件描述符其实就是一个数字。

  • 文件描述符是一个数字,它代表一条数据流。
  1. 一个标准进程
数据流 含义
0 键盘 标准输入
1 屏幕 标准输出
2 屏幕 标准错误
3 数据库连接 其它形式的数据流

创建进程以后,标准输入连到键盘,标准输出和标准错误都连接到屏幕。它们会保持这样的连接,直到有人把它们重定向到了其他地方。

  • 文件描述符描述的不一定是文件。

重定向即替换数据流。

进程可以重定向自己

到目前为止,我们只用> <重定向过程序,但只要修改描述符表,进程也能重定向他们自己。 > - ./myprog >output.txt 2>error.log > - 2> 表示将标准错误重定向。 > - ./myprog 2>&1表示将标准错误重定向到标准输出

  1. fileno()返回描述符号 每打开一个文件,操作系统都会在描述符表中新注册一项。假设打开了某个文件: FILE *my_file = fopen("guitar.mp3","r"); 操作系统会打开guitar.mp3文件,然后返回一个指向它的指针,操作系统还会遍历描述符表寻找空项,把新文件注册在其中。 | # | 数据流 |含义| | :-------- | --------:| ---:| | 0 | 键盘 |标准输入| | 1 | 屏幕 |标准输出| | 2 | 屏幕 |标准错误| | 3 | 数据库连接 |其它形式的数据流| | 4 | guitar.mp3 |其它形式的数据流| 调用fileno()就可以根据文件指针知道它是几号文件描述符。
  2. dup2()复制数据流 dup是duplicate的缩写,举例说明dup2的用法: dup2(4,3):将3号文件描述符指向4号文件描述符指向的数据流
代码

sample

转载于:https://my.oschina.net/alextuan/blog/655910

Head First C 学习日志 第十章 进程间通信 输入输出重定向相关推荐

  1. HTML5 Canvas 学习日志(三)

    2019独角兽企业重金招聘Python工程师标准>>>  HTML5 Canvas 学习日志(三) Canvas的11种合成 蓝色为destination,粉色为source 1 ...

  2. .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)

    .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图 ...

  3. 我的游戏学习日志46——游戏交互设计(2)

    我的游戏学习日志46--游戏交互设计(2) 2.游戏界面设计 游戏界面在保持一致性.可读性.效率性等普适原则的基础上,还应该特殊关照玩家的沉浸体验. 首要原则是保证游戏的顺畅使用. (1)提高自然性和 ...

  4. 0122 - EOS 编程学习日志(1)

    EOS 编程到底是什么呢.学什么呢? 抱歉,我现在也不无法回答.不过,我可以告诉你我做了哪些尝试.目前的理解,以及下一步还要做什么. 首先,EOS 开发最重要的文档自然是在 GitHub: githu ...

  5. MVC 学习日志1(上)

    MVC 学习日志1(上) 2012.7.5 开始学习MVC,本以为这个框架多难学,学下来的感受是其实也就是编写格式而已,和普通的webform有质的区别.顿时理解那句老话,世上无难事,只怕有心人.只要 ...

  6. 《Go语言圣经》学习笔记 第十章 包和工具

    <Go语言圣经>学习笔记 第十章 包和工具 目录 包简介 导入路径 包声明 导入声明 包的匿名导入 包和命名 工具 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. G ...

  7. opencv生成日志_OpenCV-Utils学习日志:VideoCapture使用样例

    1.VideoCapture可以打开多种来源的数据流,但常见的是相机.视频及图像序列三类数据流: (1)打开相机数据流,需要指定相机在主机上的设备编号,若主机上只有一个相机则编号通常是0. (2)打开 ...

  8. python爬虫实训日志_Python学习学习日志——爬虫《第一篇》(BeautifulSoup)

    爬虫简介(学习日志第一篇) 一.爬虫介绍 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Pyyhon爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.U ...

  9. java框架学习日志-2

    2019独角兽企业重金招聘Python工程师标准>>> 上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又 ...

  10. 我的游戏学习日志17——游戏元素的解析(1)

    我的游戏学习日志17--游戏元素的解析(1) 1.沉浸元素 定义:在一般的定义上指通过物理方式和想象进入一个与通常环境不同的场景.(也被也称"置入"和"临场") ...

最新文章

  1. JQuery面试题1
  2. 基于暗通道优先算法的去雾应用(Matlab/C++)
  3. (机器视觉)Halcon下颜色识别与联合C#编程
  4. 最大子序和—leetcode53
  5. 1965 - 2019 年最流行的编程语言变化
  6. jug java_架构大型企业Java项目–我的虚拟JUG会话
  7. 【转】如何开始学习CoreCLR源代码?
  8. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的办公一体化系统
  9. 10分钟python游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏
  10. Python 利用*args和**kwargs解决函数遇到不确定数量参数问题
  11. 具体数学-第6课(下降阶乘幂)
  12. 力扣-274 H 指数
  13. OSPF 的单区域配置(以华为模拟器为例)
  14. [计算机组成原理-02] 计算机硬件的基本组成和工作原理
  15. 哪些好的绘图软件和绘图工具?
  16. MySQL+Navicat安装教程
  17. b级计算机机房标准,B级电子信息系统机房技术要求国标GB50174–2008
  18. 已知三角函数值用计算机如何求角度,【已知三角函数值求角度】第一册已知三角函数值求角...
  19. 翼灵物联工作室第一次考试总结
  20. tipask二次开发总结_WeCenter和Tipask的智能问答系统的区别

热门文章

  1. java 焦点转移_将焦点移至键Enter上的下一个控件
  2. docker 厂商 容器_我终于不用再解释Docker了!
  3. php 1个中文几个字节,PHP函数第15款:gbk中文截取,1个中文字节为2个英文字节 cn_substr...
  4. python三位数数字求和_Python定义函数实现累计求和操作
  5. .netcore signalR 实时消息推送
  6. Django学习笔记二
  7. JS内置对象方法——array
  8. 批量将ANSI文本txt文件转换成UTF8编码格式 (vbs方法)
  9. Matplotlib常用绘图示例
  10. Spring同mybatis整合讲义(事物)