1.1进程和内存

fork

父进程中 fork 返回 子进程的PID

子进程中 fork 返回 0

exit

exit会让当前进程停止执行并释放资源(包括内存和打开的文件)

通常:

0 表示 成功

1 表示 失败

wait

wait 系统调用并返回当前进程已退出或杀死的进程PID,并将子进程的状态复制到wait的地址

另外:

如果子进程没有退出,那wait等待子进程的退出

如果没有子级,返回-1

如果父级不关注子级的退出状态,返回0

1.2I/O与文件描述符

输入和输出称为I/O

文件描述符接口将文件,管道和设备之间的差异抽象出来,使他们看起来都像字节流

文件描述符一般来说

0.标准输入

1.标准输出

2.标准错误

而shell确保实现这一点

read

read(fd,buf,n)从文件描述符fd读取最多n字节,将它们复制到buf

返回读取的字节数

引用文件的每个文件描述符都有一个与之关联的偏移量。read从当前文件偏移量开始读取数据,然后将该偏移量前进所读取的字节数:(也就是说)后续读取将返回第一次读取返回的字节之后的字节。当没有更多的字节可读时,read返回0来表示文件的结束。

write

write(fd,buf,n)将buf中的n字节写入文件描述符

返回写入的字节数

只有发生错误时才会写入小于n字节的数据。与读一样,write在当前文件偏移量处写入数据,然后将该偏移量向前推进写入的字节数:每个write从上一个偏移量停止的地方开始写入。

close

close释放一个文件描述符,使其可以被open,pipe,dup重用

新分配的文件描述符总是当前进程中编号最小的未使用描述符

fork复制了文件描述符,但是每个基础文件偏移量在父进程和子进程中是共享的。

dup

dup复制一个现有的文件描述符,返回一个引用自同一个底层I/O对象的新文件描述符。两个文件描述符共享一个偏移量

1.3管道

管道相比临时文件至少有四个优势:

首先,管道会自动清理自己;在文件重定向时,shell使用完/tmp/xyz后必须小心删除

其次,管道可以任意传递长的数据流,而文件重定向需要磁盘上足够的空闲空间来存储所有的数据。

第三,管道允许并行执行管道阶段,而文件方法要求第一个程序在第二个程序启动之前完成。

第四,如果实现进程间通讯,管道的阻塞式读写比文件的非阻塞语义更高效。

MIT 操作系统6.S081第一章的更多相关文章

  1. 第一章 Java多线程技能

    1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...

  2. 第一章.C语言简介

    C语言第一章 C语言简介   目录 一.C语言介绍 二.C语言特点 三.Hello World 四.转义符 五.占位符 六.俄罗斯方块游戏 七.文件下载 一.C语言介绍 C是一种通用的编程语言,广泛用 ...

  3. 第一章 Android系统移植与驱动开发概述

    本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Andro ...

  4. 【php学习】PHP 入门经典第一章笔记

    第一章: php在线手册:http://php.net/manual/zh/index.php 在开始学习PHP之前,先来看一个合格的PHP程序员今后应具备哪些知识,这里只是笔者的一些总结,希望对读者 ...

  5. 第一章 数据库概述、MySQL的安装和配置

      第一章 数据库概述.MySQL的安装和配置   1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...

  6. 第一章 Andorid系统移植与驱动开发概述 - 读书笔记

    Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...

  7. Java学习笔记 第一章 入门<转>

    第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...

  8. 《LINUX内核设计与实现》读书笔记之第一章和第二章

    一.第一章 1. Unix内核的特点简洁:仅提供系统调用并有一个非常明确的设计目的抽象:几乎所有东西都被当做文件可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力进程:创建 ...

  9. PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)

    主讲人 常象宇 大家好,我是likrain,本来我和网神说的是我可以作为机动,大家不想讲哪里我可以试试,结果大家不想讲第一章.估计都是大神觉得第一章比较简单,所以就由我来吧.我的背景是统计与数学,稍懂 ...

  10. 【翻译习作】 Windows Workflow Foundation程序开发-第一章02

    1.2      Windows Workflow概览 微软的Windows Workflow Foundation(简称WF)是.NET框架3.0版的一部分..NET3.0其它主要部分是Window ...

随机推荐

  1. Qt编写地图综合应用53-省市轮廓图下载

    一.前言 Qt的浏览器控件的交互机制非常方便,所以在在线地图的时候可以对每个区域的经纬度坐标集合发给Qt程序,让他去存储到文件,在实际的测试过程中,发现有部分地图有多个封闭的曲线的,比如散落的岛屿和飞 ...

  2. Qt编写安防视频监控系统21-摄像机管理

    一.前言 摄像机管理在整个系统中是数据库部分最核心的,只有添加了摄像机信息,才能进行加载,生成树状列表等,摄像机表信息的字段内容改过好几次,有可能后期还需要修改,目前摄像机表信息主要包括摄像机编号.摄 ...

  3. DotNetBar115破解版下载地址

    DotNetBar115破解版下载地址: 百度网盘:https://pan.baidu.com/s/187bkgB6tGyp1jUicsljfkQ 提取码:v0za

  4. IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<上网慢?经常掉线?这篇文章告诉你该怎么办!>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注 ...

  5. Linux服务器环境安装mysql

    背景 1.安装环境:kvm虚拟机 2.运行环境:linux 3.架构:x86 4.安装mysql版本:mysql-5.7 1.安装准备 # Mysql官网 https://downloads.mysq ...

  6. Note - 两类容斥

    \(\S1.\) 等价容斥   (乱取的名字.)   题目将组合对象构成的 "等价类" 进行了定义和限定. 我们往往无法计数 "等价类真的长这样" 的方案, 而 ...

  7. linux-大数据常用命令

    1. vi/vim一般模式语法 功能描述yy 复制光标当前一行y数字y 复制一段(从第几行到第几行)p 箭头移动到目的行粘贴u 撤销上一步dd 删除光标当前行d数字d 删除光标(含)后多少行x 删除一 ...

  8. Apollo架构设计

    Apollo架构设计 Apollo有一点很好,就是它是由国内携程团队开发,而且文档写的很全,代码也完全开源.如果去了解它也可以直接去看它的官方文档. 一.配置中心概念 1.背景 在实际开发中都会与配置 ...

  9. Codeblocks 显示所创建工程的文件夹

    问题: 有时创建完工程后没有默认打开文件夹: 方法: 使用F2 +shift view->manager

  10. Svelte 最新中文文档翻译(1)—— 概述与入门指南

    前言 Svelte,一个非常"有趣".用起来"很爽"的前端框架.从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 ...