登陆 

     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. Android 7.1 快捷方式 Shortcuts

    转载请注明出处:王亟亟的大牛之路 前些天就看到相关内容了,但是最近吸毒比较深(wow),所以没有紧跟潮流,今天补一篇. 先安利:https://github.com/ddwhan0123/Useful ...

  2. mac下搭建基于vue-cli 3.0的Element UI 项目

    1.安装yarn管理工具(包含node.js); 2.安装全局vue-cli全家桶: yarn global add @vue/cli 3.创建.测试一个vue-cli项目: vue create a ...

  3. ZooKeeper的API操作(二)(通俗易懂)

    所需要6个jar包,都是解压zookeeper的tar包后里面的. zookeeper-3.4.10.jar    jline-0.094.jar    log4j-1.2.16.jar netty- ...

  4. jQuery实际案例②——三层轮播图

    1.如图,这种轮播图需要实现的是,当鼠标移到2上时,第二张图片从右侧过来 2.需要注意的:①很明显这是通过改变z-index与left值来实现的:  ②整体布局需注意,图与数值(1,2,3,4,5)两 ...

  5. CTR的贝叶斯平滑

    参考论文: Click-Through Rate Estimation for Rare Events in Online Advertising 参考的博客: 1.https://jiayi797. ...

  6. 6.你以为你真的了解final吗?

    1. final的简介 final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类.即使能够知道final具体的使用方法,我想对fi ...

  7. GlusterFS原创资源

    学习博客: GlusterFS原创资源

  8. Python批量修改图片格式和尺寸

    Python批量修改图片格式和尺寸 备注: 1.导入了PIL库,是处理图片用的,很强大; 2.导入了的win32库,是判断隐藏文件用的,我们的项目需要删除隐藏文件,不需要的可以直接找到删除. 3.导入 ...

  9. OpenStack Mitaka Neutron SR-IOV配置

    ### 一.在所有节点(控制节点.计算节点) 1.修改BIOS ``` BOIS里面开启SR-IOV功能 开启 VT-d (inter virtualization technology)和 SR-I ...

  10. ansible入门六(roles)

    一.什么场景下会用roles? 假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器.我们如何来定义playbook? 第一个play用到 ...