登陆 

     1.登录名 
          系统在其 口令文件(通常是/etc/passwd文件) 中查看用户名,口令文件中包含了有关用户的信息。 
     2.shell 
          shell是一个命令解析器,读取用户输入的内容,然后执行命令。
 
文件和目录
     1.文件系统 
          UNIX文件系统是 目录 和 文件 的一种层次结构。 所有 的起点成为(root)目录, 根目录的名称是一个” / ” 
          目录 是一个包含目录项的文件。 可以认为每个目录项都包含一个文件名,同时还包含文件属性的信息(stat和fstat函数返回包含所有文件属性的一个结构)。 
     2.文件名 
          目录中的各个名字称为文件名(filename)。 创建目录时会自动创建两个文件名: . 和 .. 分别指向当前目录和父目录。 
     3.路径名 
          ” / ” 开头称为绝对路径名, 否则都成为相对路径名。 
          相对路径名指向相对于当前目录的文件。
 
    实例
           列出一个目录中所有文件的名字。
               
           #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);
              }
        • 包含 系统头文件 dirent.h 以便使用 opendir 和 readdir 的函数原型。
        • opendir 函数返回 指向 DIR 结构的指针。 再将指针传给readdir函数。readdir函数返回一个指向dirent结构的指针。
 
     4.工作目录
          每个进程都有一个工作目录(working directory),或成为当前工作目录。所有相对路径名都从工作目录开始解释。
          进程可以用 chdir 函数更改其工作目录。
 
     5.起始目录
           登陆时, 工作目录设置为起始目录(home directory) , 起始目录 从 口令文件 中 相应用户的 登陆项 中取得。
 
输入和输出
     
     1. 文件描述符
          文件描述符(file descripyor) 通常是一个 小的 非负整数 。
          内核用以标识特定进程正在访问的文件。
          当内核 打开 一个现有文件 或者 创建 一个新文件时, 都返回一个文件描述符。
          在  或  文件的时候,可以使用文件描述符。
 
     2. 标准输入,标准输出或标准错误
          每当运行一个新程序时,所有的 shell 都为其打开 3个 文件描述符。标准输入(standard input),标准输出(standard output),标准错误(standard error)。
          大多数 shell 都提供一种方法,使其中任何一个或所有描述符都能 重定向 到某个文件,例如:
               ls > file.list
               执行 ls 命令, 其 标准输出 重定向 到名为file.list 的文件中。
 
     3. 不带缓冲的 I/O
          函数 open, read, write, lseek, close 提供了不带缓冲的I/O。 都使用文件描述符。
 
               实例
                    #include "apue.h"
                    
                    #define BUFFSIZE 4096
               
                    int main(void)
                    {
                         int n;
                         char buf[BUFFSIZE];
          
                         while (( n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
                              if( write(STOUT_FILENO, buf, n) != n)
                                   err_sys("write error);
 
                         if(n<0)
                              err_sys("read error");
 
                         exit(0);
                    }
 
      • 头文件<unistd.h> 包含 STDIN_FILENO 和 STDOUT_FILENO 常量。
      • read函数返回读取的字节数,当达到输入文件的尾端时,read返回0,如果发生错误返回-1。
 
      4. 标准I/O
           标准I/O函数 为不带缓冲的I/O函数提供了一个带缓冲的接口。使用标准I/O函数不用考虑如何选最佳的缓冲区大小。
 
                     实例
                          使用标准输入和输出
                         
                      #include "apue.h"
                     
                     int main(void)
                     {
                         int c;
                         
                         while (( c = getc(stdin)) != EOF)
                              if( putc(c,stdout) == EOF)
                                   err_sys("output error");
 
                         if (ferror(stdin))
                              err_sys("input error");
 
                         exit(0); 
                     }     
                         函数getc一次读取一个字符,然后putc将此字符写到标准输出。
 
 
程序和进程
     1. 程序
          程序是一个存储在磁盘的可执行文件。 内核 使用 exec函数 将程序读入内存并执行。
     2. 进程和进程ID
          程序执行的实例被称之为进程(process)。
          
          UNIX系统确保每个进程都有独立的 进程ID(非负整数)
 
          getpid() 可以获取进程ID。
 
     3. 进程控制
          3个主要的进程控制函数 : fork , exec , waitpid 。 (exec函数有7个变体, 统称为exec函数)
 
     4. 线程和线程ID
          一个进程中的所有线程共享同一地址空间 , 文件描述符 , 栈 , 进程相关属性。
 
          
出错处理
     <errno.h> 中定义了 errno 以及可以赋予它的各种常量。
     这些常量都以字符E开头。
 
     
     strerror( int errnum ) 函数将 errnum 映射为一个出错消息字符串,返回此字符串的指针。
 
     perror( const char *msg ) 函数 在标准错误上产生错误信息。
 
 
用户标识
     1. 用户ID
          口令文件中, 每个用户有一个唯一的用户ID, root用户ID 为 0。
     2. 组ID
          口令文件中, 组文件 将 组名 映射为 数值的组ID。 组文件同常是 /etc/group
          口令文件 包含了 登录名和用户ID之间的映射关系, 组文件包含了组名和组ID之间的映射关系。
          getuid 和 getgid 分别返回 用户ID 和 组ID。
     3. 附属组ID
          一个用户属于最多16个其他的组。
          登陆时, 读文件/etc/group 寻找列有该用户作为其他成员的前16个记录就可以得到该用户的附属组ID。
 
 
信号(signal)
     信号用于通知进程发生了某种情况。
     
     进程有3种处理信号的方式:
          1.忽略信号
          2.按系统默认方式处理(比如系统自动终止程序)
          3.提供一个函数,信号发生时调用此函数。如: signal( ) 函数
 
 
时间值
     1. 日历时间
          指 自 1970年1月1日 00:00:00 这个时间开始缩经过的 秒数 累计值。
          系统基本数据类型 time_t 用于保存这种时间值。
     2. 进程时间
          CPU时间  用来度量进程使用的CPU资源。
          系统基本数据类型 clock_t 用于保存这种时间值。
 
系统调用和库函数
     概括的来说,库函数就是对系统调用的进一步封装。

UNIX 基础知识的更多相关文章

  1. UNIX环境高级编程--第一章 UNIX基础知识

    第一章 UNIX基础知识 1.2 UNIX体系结构   从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...

  2. 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识

    1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...

  3. 《UNIX环境高级编程》笔记——1.UNIX基础知识

    这一章节侧重一些基本概念和书中用到的一些名词. 一.引言 所有的操作都提供服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储区以及获得当前时间等. 二.UNIX体系结构 其实linux常见 ...

  4. 第一章:UNIX基础知识

    本章内容主要是为了学习UNIX的基本知识和一些最基本的系统函数. 学习的关键就是跟随者书本敲代码.本节遇到的第一个问题就死本书的apue.h这个文件:一开始没有注意这个文件,盲目的去百度,一番百度之后 ...

  5. UNIX基础知识之程序和进程

    一.程序 程序(program)是存放在磁盘上.处于某个目录中的一个可执行文件.使用6个exec函数中的一个由内核将程序读入存储器,并使其执行. 二.进程和进程ID 程序的执行实例被称为进程(proc ...

  6. UNIX环境高级编程 第1章 UNIX基础知识

    所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储空间.提供时间等. UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程 ...

  7. UNIX,基础知识,文件IO,文件和目录

    2015.1.27星期二,早晨阴天,中午下雪了今天上午老师不上课,程序语句,记一下:main(void){ int c; while((c = getc(stdin)) != EOF) if(putc ...

  8. UNIX基础知识之时间值

    本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 长期以来,UNIX系统一直使用两种不同的时间值 ...

  9. UNIX基础知识之信号

    本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 信号(signal)是通知进程已发生某种情况的 ...

  10. UNIX基础知识之用户标识

    一.用户ID 口令文件(/etc/passwd)登录项中的用户ID(user ID)是个数值,它向系统标识各个不同的用户.系统管理员在确定一个用户的登录名的同时,确定其用户ID.用户不能更改其用户ID ...

随机推荐

  1. IE8下打印内容缩小问题

    去掉启动缩小字体填充的设置项勾选 来自为知笔记(Wiz)

  2. 跟着vamei复习概率论

    最近重新看了一下概率论,感觉很多东西都遗忘了,还会陷入各种误区,赶紧的纠正回来. 概率论这块,主要内容包括: 事件.条件概率.随机变量.随机变量的分布函数.概率密度.联合分布.期望.方差.协方差. 我 ...

  3. PMP第一章:引论

    项目是为创造独特的产品,服务或成果而进行的临时性的工作. 项目的临时性是指项目有明确的起点和终点. 项目旨在推动组织从一个状态(当前状态)转到另一个状态(将来状态),从而达成特定目标. 项目管理就是将 ...

  4. jquery validate检验

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. spring security3.1配置比较纠结的2个问题

    转自:http://www.iteye.com/topic/1122629 总论无疑问的,spring security在怎么保护网页应用安全上做得很强很周全,但有些地方还是很差强人意,比如对< ...

  6. go Rails 知识点,Concepts Series:url和parameter; 建立Rails App Templates;报错页面debug; counter_cache

    Rails Concepts Series: https://gorails.com/series/rails-concepts 基本都是免费的 一些细小的知识点,很有帮助. URL和paramete ...

  7. centos 6.6 配置xdmcp远程桌面

    1.首先安装 xdm软件:yum install xdm vi /etc/X11/xdm/Xaccess: * allow  vi /etc/gdm/custom.conf: [security] A ...

  8. 【BZOJ4819】新生舞会(分数规划,网络流)

    [BZOJ4819]新生舞会(分数规划,网络流) 题面 BZOJ Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买 ...

  9. Attribute 'items' must be an array, a Collection or a Map错误解决!

    唉!真的要说一句话叫做论一串代码的重要性!就是如此的气人!气的牙根痒痒! 前几天刚刚写过SpringMVC之ModelAndView的 jsp值在浏览页面不显示的问题!也是因为这一串代码,但是这一次一 ...

  10. Struts2中的包的作用描述

    asm-3.3.jar作用:操作java字节码的类库包路径及主要类:未提供 asm-commons-3.3.jar作用:提供了基于事件的表现形式包路径及主要类:未提供 asm-tree-3.3.jar ...