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基本概念的更多相关文章

  1. 【转】apue《UNIX环境高级编程第三版》第一章答案详解

    原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此 ...

  2. UNIX基础概念

    UNIX基本概念 进程 从用户观点来看:进程是程序的一个执行实例. 从UNIX系统内部来看,是为运行程序提供执行环境的实体,是系统进行资源分配和调度运行的一个单位. 进程有三个特点: 1)进程有一个控 ...

  3. 类UNIX操作系统概念

    摘要:对unix os上的一些基本概念做一个统一的梳理,以下内容转自互联网和相关书籍 一 进程组.会话.控制终端 进程组---------------------------------------- ...

  4. APUE《UNIX 环境高级编程》读后感

    今天终于把APUE前17章全部看完了,基本上主要知识就在这些章节里. 之前看完<unix/linux编程实践教程>时,有一种豁然开朗.心旷神怡的感觉,在代码级别了解了linux很多系统机制 ...

  5. 使用APUE(UNIX高级编程)源代码

    方法一:1.APUE源代码下载:http://www.apuebook.com/code3e.html2.我保存到了/root下.解压缩:tar -xzvf src.tar.gz3.cd apue.2 ...

  6. APUE 1 -- Unix数据结构

    Unix 类操作系统支持不同进程间共享文件.对于所有的I/O,内核使用3种数据结构来表示一个打开的文件. 进程表.每个进程在进程表中有其相应的入口.文件结构中,每个进程表的入口是文件描述符表,每个文件 ...

  7. Unix线程概念、控制原语、属性

    线程: 线程基础概念: 线程在Linux中又称轻量级进程.而且它和进程都有PCB(进程控制块).可是差别是进程的虚拟地址空间是独享的,也就是每一个进程都有自己的虚拟地址空间.可是线程的PCB是共享的, ...

  8. linux/unix 基本概念的认识(sha-bang 、PPA)

    PPA:Personal Package Archives : Ubuntu: 比如为安装 emacs,需要首先添加某个PPA: sudo add-apt-repository ppa:cassou/ ...

  9. 《Linux/Unix系统编程手册》 时间子系统

    Linux下操作系统编程有两本经典APUE即<Advanced Programming in the UNIX Environment>和TLPI<The Linux Program ...

随机推荐

  1. scaleform mobile sdk for android 多点触摸 修正

    修正 scaleform 的多点触控 (随手一记 给后来的人做个参考) scaleform 版本号 4.2.24 (估计这就是最后一个 移动版的版本了,万年没有更新了) 开始 一直以为 scalefo ...

  2. BZOJ_1007_ [HNOI2008]_水平可见直线_(单调栈+凸包)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1007 给出一些直线,沿着y轴从上往下看,能看到多少条直线. 分析 由于直线相交,会遮挡住一些直 ...

  3. Nagios ’status.cgi‘文件权限许可和访问控制漏洞

    漏洞名称: Nagios ’status.cgi‘文件权限许可和访问控制漏洞 CNNVD编号: CNNVD-201307-013 发布时间: 2014-02-21 更新时间: 2014-02-21 危 ...

  4. POJ 3159 Candies 解题报告(差分约束 Dijkstra+优先队列 SPFA+栈)

    原题地址:http://poj.org/problem?id=3159 题意大概是班长发糖果,班里面有不良风气,A希望B的糖果不比自己多C个.班长要满足小朋友的需求,而且要让自己的糖果比snoopy的 ...

  5. 【转】国内用户如何加快App Store的访问速度

    原文网址:http://www.app111.com/doc/100024206_1.html 作为国内互联网用户是比较可怜的,除了国外四大顶尖互联网服务不能访问外,就是App Store用得也比较痛 ...

  6. windows查看服务端口

    开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...

  7. JavaScript window.location对象

    JavaScript window.location对象   示例 注意 方法 经常使用window.location,它的结构总是记不住,简单梳理下,方便以后查询. 示例 URL:http://b. ...

  8. SQL SERVER 2008查询其他数据库

    1.访问本地的其他数据库 --启用Ad Hoc Distributed Queries-- reconfigure reconfigure -- 使用完成后,关闭Ad Hoc Distributed ...

  9. selenium WebDriver 获取disabled文本框内容(转)

    有这样一个元素:<input name="name" id="id" type="text" disabled="true& ...

  10. flume服务的搭建

    搭建前先统一时间,关闭防火墙,使用的jar包版本是1.6.0的 服务配置有两种方式 第一种:具体步骤如下: 1.将jar包传至node1上,解压至根目录 2.更改目录名,使用如下命令:mv apach ...