APUE(1)——UNIX基本概念
1、OS——操作系统是管理硬件资源的软件,也称作内核。与此同时,操作系统还为其他程序提供一系列的服务,比如执行程序、打开文件、读文件等等。
2、Kernel——内核对外提供一系列的系统调用,而一些库又把这些系统调用封装成更加容易使用的API。
3、Shell——shell是一个命令行解释器,通过读取用户在终端上输入的命令,或是脚本文件执行相应的命令。Linux中常见的shell为Bourne-again shell(Bash)。
4、File System——Unix的文件系统由目录和文件组成,而目录本身也为一个文件,其中有一系列的目录项,每个目录项由文件名标识,并带有文件的各种属性(所属用户,权限,修改时间等)。每一个目录在创建的时候便会自动创建两个文件:“.” (当前目录)和“..”上一级目录,这就是为什么“./”表示当前目录,而“cd..”表示退回上一级目录。
5、Pathname——路径分为两种:由“/”(“/”表示根目录)开始的绝对路径,和由当前目录开始的相对路径。
6、File Descriptors——文件标识符是一个非负整数,用来区分正在被访问的文件。当一个程序启动的时候会自动创建三个文件标识符,standard input,standard output,standard error 。当我们在终端上输入命令,如:“ls”,默认将这三个文件标识符绑定到终端。同时我们还可以将这三个文件标识符进行重定向。"ls > file.list"表示将standard output绑定到文件”file.list“上,”ls < file.list“则表示将standard input绑定到文件”file.list“上。
7、Error Handling——在系统调用的时候,当错误发生,函数通常会返回一个负数,并且将errno这个整数设定为某个特定的值(例如EACCES,表示权限错误),从这个值我们可以得到其错误的信息。以下为两个错误处理的基本函数:
char *strerror(int errnum); // 通入传入不同的errno,得到这个值所代表的错误信息
void perror(const char *msg); // 输出当前errno代表的错误信息,并以字符串“$msg: ”作为前缀。
8、Signal——signal是通知进程某个事件发生的机制(如SIGFPE:floating-point exception表示发生除以0的事件发生)。以下为两个关于信号的基本函数:
int kill(pid_t pid, int signo); // 将信号signo传递给进程pid
(*signal(int signo, void (*func)(int)))(int); // 将信号量signo与特定函数绑定,从而使得某个信号发生的时候,该函数被调用来处理这一信号。
9、Time Values——UNIX系统中记录着两种时间变量,time_t表示从标准世界时间(UTC)到现在的总秒数;clock_t描述CPU分配给各个进程的时间。
在终端下输入命令前加上“time”可以测量进程所用的时间。
$ time ./a.out real 0m0.81s
user 0m0.11s
sys 0m0.07s
其中“real”表示进程所使用的总时间(依赖于其它进程的数量),“user”表示进程分得的CPU总时间,“sys”表示内核代表进程运行的总时间。
通常把“user”和“sys”的和称作CPU时间。
APUE(1)——UNIX基本概念的更多相关文章
- 【转】apue《UNIX环境高级编程第三版》第一章答案详解
原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此 ...
- UNIX基础概念
UNIX基本概念 进程 从用户观点来看:进程是程序的一个执行实例. 从UNIX系统内部来看,是为运行程序提供执行环境的实体,是系统进行资源分配和调度运行的一个单位. 进程有三个特点: 1)进程有一个控 ...
- 类UNIX操作系统概念
摘要:对unix os上的一些基本概念做一个统一的梳理,以下内容转自互联网和相关书籍 一 进程组.会话.控制终端 进程组---------------------------------------- ...
- APUE《UNIX 环境高级编程》读后感
今天终于把APUE前17章全部看完了,基本上主要知识就在这些章节里. 之前看完<unix/linux编程实践教程>时,有一种豁然开朗.心旷神怡的感觉,在代码级别了解了linux很多系统机制 ...
- 使用APUE(UNIX高级编程)源代码
方法一:1.APUE源代码下载:http://www.apuebook.com/code3e.html2.我保存到了/root下.解压缩:tar -xzvf src.tar.gz3.cd apue.2 ...
- APUE 1 -- Unix数据结构
Unix 类操作系统支持不同进程间共享文件.对于所有的I/O,内核使用3种数据结构来表示一个打开的文件. 进程表.每个进程在进程表中有其相应的入口.文件结构中,每个进程表的入口是文件描述符表,每个文件 ...
- Unix线程概念、控制原语、属性
线程: 线程基础概念: 线程在Linux中又称轻量级进程.而且它和进程都有PCB(进程控制块).可是差别是进程的虚拟地址空间是独享的,也就是每一个进程都有自己的虚拟地址空间.可是线程的PCB是共享的, ...
- linux/unix 基本概念的认识(sha-bang 、PPA)
PPA:Personal Package Archives : Ubuntu: 比如为安装 emacs,需要首先添加某个PPA: sudo add-apt-repository ppa:cassou/ ...
- 《Linux/Unix系统编程手册》 时间子系统
Linux下操作系统编程有两本经典APUE即<Advanced Programming in the UNIX Environment>和TLPI<The Linux Program ...
随机推荐
- hdu4499Cannon(搜索)
链接 这样的叫迭代吗..最近多做些搜索题了要 分行分列搜 判断满足条件 #include <iostream> #include<cstdio> #include<cst ...
- Linux Kernel ‘oz_cdev_write()’函数本地缓冲区溢出漏洞
漏洞名称: Linux Kernel ‘oz_cdev_write()’函数本地缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-060 发布时间: 2013-11-07 更新时间: 201 ...
- c语言输入与输出库函数#include<stdio.h>
last modified: 2010-05-28 输入与输出<stdio.h> 头文件<stdio.h>定义了用于输入和输出的函数.类型和宏.最重要的类型是用于声明文件指针的 ...
- POJ --- 3613 (K步最短路+矩阵快速幂+floyd)
Cow Relays Description For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided ...
- C# VS2010中,用微软自带的System.Data.OracleClient来连接Oracle数据库
由于微软在.Net框架4.0中已经决定撤销使用System.Data.OracleClient,造成在VS2010中无法连接Oracle数据库,但它还依旧存在于.Net架构中,我们可以通过自己引用 C ...
- Curl之Post Json
curl Post Json $ curl -i -X POST -H "'Content-type':'application/x-www-form-urlencoded', 'chars ...
- curl 使用简介
Libcurl使用介绍: 四个关键函数: 1. curl_easy_init() 初始化curl环境,新建curl对象,返回对象句柄,使用举例: CURL *handler = cur ...
- Vijos P1060 盒子
Vijos P1060 盒子 链接:https://vijos.org/p/1060 [思路] 组合公式+精度选择. 首先解决将A个数放入N个集合的数目,其中集合可空.因为可以有球不放入集合,所以增加 ...
- algorithm@ KMP
一. KMP算法 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,简称KMP算法.KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与 ...
- npm 国内镜像资源 --转载
npm 是node.js 环境下的包管理器,非常强大智能. 生活这这片神奇的土地上,各种奇葩手段屡见不鲜啊. 为什么要换源? npm 官方站点 http://www.npmjs.org/ 并没有被墙, ...