UNIX环境高级编程第一章总结

第一章


UNIX基础知识


1.1 引言

所有的操作系统都需要向它们运行的程序提供各种服务。通常这些服务包括执行新程序,打开文件,读文件,分配存储区以及获得当前时间等。

1.2 UNIX体系结构

在严格意义上,可将操作系统定义为一种 软件,它控制计算机硬件资源,提供程序运行环境.一般而言,我们称此种软件为内核(kernel),它相对较小,位于环境的中心.如图所示:
UNIX体系结构
广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算以独有的特性。这些软件包括系统实用程序(system utilities),应用软件,shell以及公用函数库等.

1.3 登录

1. 登录名

用户在登录UNIX系统时,先键入登录名,然后输入口令(密码).系统在其口令文件(通常是/etc/passwd文件)中查看登录名.口令文件中的登录项目由7个以冒号分隔的字段组成.它们是:
登录名:加密口令:数值用户ID:数值组ID:注释字段:起始目录:shell程序
在Ubuntu 14.04 系统,口令文件如下图所示:
这里写图片描述
目前所有的系统已将加密口令移到另一个文件中.第六章将说明这种文件以及访问它们的函数.

2. shell

用户登录后,系统通常先显示一些系统信息,然后用户就可以向shell程序键入命令.shell是一个命令行解释器,它读取用户输入,然后执行命令.用户通常用终端(交互式shell),有时则通过文件(称为shell脚本,shell script)向shell进行输入.
Ubuntu桌面系统下,启动终端的快捷键是ctrl+alt+t.若要运行shell脚本,在编辑好脚本以后需要给脚本文件添加可执行权限也就是:

chmod +x scriptname

然后在命令行下输入./scriptname,便可以执行shell脚本了.

表1-1总结了常见的shell:

路径FreeBSD 5.2.1Linux 2.4.22Mac OS X 10.3Solaris 9
Bourne shell/bin/sh*链接至bash链接至bash*
Bourne-again shell/bin/bash可选的***
C shell/bin/csh链接至 tcsh链接至tcsh链接至tcsh*
Koen shell/bin/ksh*
TENEX C shell/bin/tcsh****

APUE采用的是bsh,ksh,bash三者都具有的功能.

1.4 文件和目录

1. 文件系统

UNIX文件系统是目录和文件组成的一种层次结构,目录的起点称为(root),其名字是一个字符/.目录(directory)是一个包含许多目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息.
文件属性是指文件类型(是普通文件还是目录),文件大小,文件所有者,文件权限(其他用户能否访问该文件)以及文件最后的修改时间等.stat和fstat函数返回包含所有文件属性的一个信息结构.第四章将详细说明文件的各种属性,

2. 文件名

目录中的各个名字称为文件名(filename).不能出现在文件名中的字符只有斜线(/)空操作符(null)两个.斜线用来分隔构成路径名的各文件名,空操作符则用来终止一个路径名.
创建新目录时会自动创建两个文件名: .(称为点)和 .. (点-点).点指当前目录,点-点则指父目录.在最高层次的根目录中,点和点-点相同.

3. 路径名

一个或多个以斜线分隔的文件名序列(也可以斜线开头)构成路径名(pathname),以斜线开头的路径名称为绝对路径名(absolutely pathname),否则称为相对路径名(relative pathname).相对路径名引用相对与当前目录的文件.文件系统根的名字(/)是一个特殊的绝对路径名,它不包含文件名.

程序清单 1-1 列出一个目录中的所有文件


#include "apue.h"
#include <dirent.h>
int
main(int argc, char *argv[])
{
    DIR *dp;
    struct dirent *dirp;

    if (argc != 2)
        err_quit("usage: ls directory_name");

    if ((dp = opendir(argv[1])) == NULL)
        err_sys("can`t open %s", argv[1]);

    while ((dirp = readdir(dp)) != NULL)
        printf("%s\n", dirp->d_name);

    closedir(dp);
    exit(0);
}

4. 工作目录

每个进程都有一个工作目录(working directory).有时称其为当前工作目录(current working directory).所有的相对路径名都是从工作目录开始解释的.进程可以使用chdir函数来更改其工作目录.

5. 起始目录

登录时,工作目录设置为起始目录(home directory),该起始目录从口令文件见1.3节中相应用户登录项中取得.

1.5 输入和输出

1. 文件描述符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值