• 第一章:Unix基础知识


    登录

         /etc/passwd文件中存放的是登录用户的相关信息

    文件描述符

        文件描述符是一个非负整数,用来标识一个进程正在打开访问的文件。在<unistd.h>头文件中,定义了 三个标准文件描述符:STDIN_FILENO(标准输

      入),STDOUT_FILENO(标准输出)  , STDERR_FILENO(标准出错)  。 虽然 一般情况下,他们的值分别为 0、1、 2  , 但是考虑到可移植性,还是应该

      使用他们的名字而非数值。

        在标准库中,I/O函数使用文件指针(FILE*)来操作文件。我们可以将文件指针转换为文件描述符,这就用到了头文件<stdio.h>中提供的一个函数:

      int fileno(FILE*fp); 从该函数返回的是转换后的描述符值。

    进程

        进程表示正在执行的程序的实例。正在执行的程序成为任务。一般用于进程控制的程序主要有三个  fork()  、 waitpid() 、 exec()(一组6个函数)。

    出错处理

        Unix中函数出错通常返回-1 , 返回值为指针类型的出错时通常返回的是NULL空指针。

        出错的时候,错误码放在errno全局变量中。可以通过perror()或stderr()打印出错误码对应的文本信息 。 在调用perror()的时候,我们习惯于将

      argv[0] 作为参数传递给他。

        在多线程环境中,errno 如果为多个线程共同使用的话,会带来不同线程的错误干扰的问题,所以 对于每个线程,都有属于自己的errno,定义如下

                  extern  int*  __errno_location(void);

                  #define  errno  (*__errno_location())

        一般发生与资源相关的非致命性错误的时候,处理方法是 延迟一段时间,然后重试。对于系统调用被系统中断的错误(即发生 EINTR 错误的时候),

      一般是重新调用该系统调用,当然,有些系统调用是不能被重启的。

    用户标识

        用户ID为 0  的用户为root用户 ,,其具有超级权限。

        组ID : 组文件将组名映射为组ID , 其所在的文件为 /etc/group 。 如今的Unix中使用32位的整形数表示用户ID和组ID。

        附加组ID:在 Unix中,允许属于一个组的用户同时属于另一个组。一个用户 最多可同时属于16个组。

    信号

        信号是通知一个进程发生某种情况的一种技术。一般来所进程通过三种手段来处理信号

            1、忽略信号的处理 : 因为某些信号是由异常引发的,其忽略的后果不定,所以不推荐这种方式。

            2、系统默认处理方式: 例如SIGFPE (浮点异常信号)的系统默认处理为结束进程。

            3、提供一个信号处理函数  , 来捕捉并处理某个异常。

    时间

        日历时间: 1979年1月1日 00:00:00  到现在所经过的秒数 , 用 time_t 类型的变量保存。

        进程时间:用时钟滴答数来表示 。 典型的有 一秒钟 50/60/100 滴答。用clock_t类型的变量来保存。可用 sysconf(_SC_CLK_TCK) 来获取系统每秒滴答数。

        一个进程的时间可从三个方面衡量:

            1、时钟时间  real

            2、用户CPU时间  user

            3、系统CPU时间  sys

            real = user +  sys

        用 time  xxx.out 可以统计某一进程执行所用的时间

    系统调用和库函数

        库函数底层调用的是系统调用。

  • 相关阅读:
    解决在QEMU上仿真STM32F429时出现的若干问题
    CentOS 7.1, 7.2 下安装dotnet core
    [尝鲜]妈妈再也不用担心 dotnet core 程序发布了: .NET Core Global Tools
    程序员节应该写博客之.NET下使用HTTP请求的正确姿势
    [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [五] 如何做全站采集?
    [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
    ubuntu15.10 或者 16.04 或者 ElementryOS 下使用 Dotnet Core
    解决 docker on windows下网络不通
    Orchestrator中 errant 的判断
    golang 中时间差的计算
  • 原文地址:https://www.cnblogs.com/wowk/p/3106596.html
Copyright © 2020-2023  润新知