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

第一章 UNIX基础知识 1.2 UNIX体系结构   从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且位于环境的核心.内核的接口被称为系统调用(system call).公共函数库构建在系统调用接口之上,应用程序既可以使用公共函数库,也可以使用系统调用.shell是一个特殊的应用程序,为运行其他应用程序提供了一个接口.   1.5 输入和输出 1.文件描述符 文件描述符(file descripti…
1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GNU 操作系统的内核 ) 内核 的接口是 系统调用 (system call) ,公用函数库 构建在系统调用之上,应用程序既可以调用公用函数库,也可以使用系统调用.shell 是一个特殊的应用程序,为运行其他应用程序提供了一个接口. 2. shell shell 是一个命令行解释器,它读取用户输入,然…
这一章节侧重一些基本概念和书中用到的一些名词. 一.引言 所有的操作都提供服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储区以及获得当前时间等. 二.UNIX体系结构 其实linux常见的系统调用不是非常多,本书附录A按字符顺序列出了常用系统调用的原型.其实linux的应用编程,一要熟悉linux的基本概念,二要对各系统调用充分了解练习. 三.登录和shell   3.1 登录 口令文件/etc/passwd记录用户的信息,作为登录的依据.以下为该文件的一条内容: username…
本章内容主要是为了学习UNIX的基本知识和一些最基本的系统函数. 学习的关键就是跟随者书本敲代码.本节遇到的第一个问题就死本书的apue.h这个文件:一开始没有注意这个文件,盲目的去百度,一番百度之后发现,其实这个文件的源码就在书的附录里面.这个给我一个教训,学习还是静下心来学习,没有一颗安定的心无法学习好,这是个教训啊,以后再也不能犯了. 关于apue.h这个文件的源码先贴在本章中便于复制 /* Our own header, to be included before all standar…
一.程序 程序(program)是存放在磁盘上.处于某个目录中的一个可执行文件.使用6个exec函数中的一个由内核将程序读入存储器,并使其执行. 二.进程和进程ID 程序的执行实例被称为进程(process).某些操作系统使用任务(task)表示正在执行的程序. UNIX系统确保每个进程都有一个唯一的数字标识符,称为进程ID(process ID).进程ID总是一个非负整数. 程序清单1-4 打印进程ID [root@localhost unix_env_advance_prog]# cat p…
所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储空间.提供时间等. UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程序运行环境.这种软件有个专业术语名称:内核.因为它小且位于计算机体系的核心.如下图所示: 上图中的系统调用包裹在内核的外围,隔离开内核以保护内核.同时,系统调用作为和内核沟通的中间桥梁. 公用函数库通常指的是C/C++的标准库,例如libc.glibc.libstdc++.libc++等标准库,不同…
2015.1.27星期二,早晨阴天,中午下雪了今天上午老师不上课,程序语句,记一下: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);} 从标准输入读命令并执行:int main(){ char…
本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 长期以来,UNIX系统一直使用两种不同的时间值: (1)日历时间 该值是自1970年1月1日00:00:00以来国际标准时间(UTC)所经过的秒数累计值(早期的手册称UTC为格林尼治标准时间).这些时间值用于记录文件最近一次的修改时间等. 系统基本数据类型time_t用于保存这种时间值. (2)进程时间 这也被称为CPU时间,用以度量进程使用的中央处理机…
本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 信号(signal)是通知进程已发生某种情况的一种技术.例如,若某一进程执行除法操作,其除数为0,则将名为SIGFPE(浮点异常)的信号发送给该进程.进程如果处理信号有三种选择: (1)忽略该信号.有些信号表示硬件异常,例如,除以0或访问进程地址空间以外的单元等,因为这些异常产生的后果不确定,所以不推荐使用这种处理方式. (2)按系统默认方式处理.对于除…
一.用户ID 口令文件(/etc/passwd)登录项中的用户ID(user ID)是个数值,它向系统标识各个不同的用户.系统管理员在确定一个用户的登录名的同时,确定其用户ID.用户不能更改其用户ID.通常每个用户有一个唯一的用户ID. 用户ID为0的用户为根(root)或超级用户(superuser).在口令文件中,通常有一个登录项,其登录名为root,我们称这种用户的特权为超级用户特权.如果一个进程具有超级用户特权,则大多数文件权限检查都不再进行.某些操作系统功能只限于向超级用户提供,超级用…
当UNIX函数出错时,常常会返回一个负值,而且整型变量errno通常被设置为含有附加信息的一个值.例如,open函数如成功执行则返回一个非负文件描述符,如出错则返回-1.在open出错时,有大约15种不同的errno值(文件不存在.权限问题等).某些函数并不返回负值而是使用另一种约定.例如,返回一个指向对象的指针的大多数函数,在出错时,将返回一个null(或NULL)指针. 文件<errno.h>中定义了符合errno以及可以赋予它的各种常量,这些常量都以字符E开头.另外,UNIX系统手册第2…
一.文件描述符 文件描述符(file descriptor)通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件.当内核打开一个已有文件或创建一个新文件时,它返回一个文件描述符.在读.写文件时,就可以使用它. 二.标准输入.标准输出和标准出错 按惯例,每当运行一个新程序时,所有的shell都会为其打开三个文件描述符:标准输入(standard input).标准输出(standard output)以及标准出错(standard error).如果没有做什么特殊处理(如重定向),则这三…
上图为UNIX操作系统的体系结构.内核的接口被称为系统调用(system call),公用函数库构建在系统调用接口之上,应用软件既可以使用公用函数库,也可直接使用系统调用. 更详细的说明如下: 所有操作系统都提供多种服务的入口点,程序由此向内核请求服务.各种版本的UNIX实现都提供定义明确.数量有限.可直接进入内核的入口点,这些入口点被称为系统调用. 系统调用接口总是在<UNIX程序员手册>的第2部分中说明,在第3部分定义了程序员可以使用的通用函数.虽然这些函数可能会调用一个或多个内核的系统调…
1.C++实现ls命令 #include<dirent.h> #include<stdlib.h> #include<iostream> #include "apue.h" using namespace std; int main(int argc,char * argv[]){ DIR *d struct dirent *dirp; if(argc!=2){ cout<<"usage: ls directory_name&q…
登陆       1.登录名            系统在其 口令文件(通常是/etc/passwd文件) 中查看用户名,口令文件中包含了有关用户的信息.       2.shell            shell是一个命令解析器,读取用户输入的内容,然后执行命令.   文件和目录      1.文件系统            UNIX文件系统是 目录 和 文件 的一种层次结构. 所有 的起点成为根(root)目录, 根目录的名称是一个” / ”            目录 是一个包含目录项的…
一.UNIX体系结构 所有操作系统都为他们所运行的程序提供服务,典型的服务包括:执行新程序.打开文件.读文件.分配存储区等.严格意义上来说,操作系统可以定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们也将这种软件成为内核,因为它相对较小,并且位于环境的核心.内核的接口被称为系统调用.公共函数库构建在之上,普通的应用程序可以调用系统调用,也可以调用公共函数库.shell是一个特殊的应用程序,位运行其他应用程序提供了一个接口. 二.文件和目录 1.文件系统 UNXI文件系统是目录和文件的…
1.1 Unix体系结构 OS定义为一种软件,它控制计算机硬件资源,提供程序运行环境,一般称其为内核(kernel),它体积小,位于环境中心. 内核的接口为系统调用(system call),共用函数库构建在系统调用上,应用软件既可以使用公用函数库,也可以使用系统调用.shell是一种特殊的应用程序,它为运行其他应用程序提供一个接口. 下图为 UNIX 体系结构: 广义上,OS包括内核和一些软件,例如 Linux 是 GNU 操作系统使用的内核,可以称这种操作系统为 GNU/Linux,但是通常…
总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时候使用的平台是Windows+VMware+debian,使用secureCRT来连接(可以实现多个终端连接). 因为第一章是本书大概的描述,所以第一章的我打算写得详细一点,而且书本的原话占的比例会比较多,重点的东西会用粗体显示出来. 1.1  引言 所有操作系统都为他们所运行的程序提供服务.典型的…
1. Unix 体系结构   内核的接口被称为系统调用 公用函数库构建在系统调用接口之上 应用软件既可以调用公用函数库,也可以直接进行系统调用   2. 文件和目录 目录操作函数:opendir---> readdir---> closedir struct dirent 结构体 stat 系统调用   3.程序.进程.线程 程序:存放在磁盘上.并处于某个目录中的一个可执行文件.使用exec系列函数将程序从磁盘读入存储器,并使其执行 进程:程序的执行实体.进程控制的3个函数:fork.exec…
UNIX体系结构: 从严格意义上讲,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们通常将这种软件称为内核(Kernel),因为他相对较小,而且位于环境的核心.图片显示了UNIX系统的体系结构. 内核的接口被称为系统调用(system call).公用函数库构建在系统调用接口只是,应用程序即可使用公用函数库,也可以使用系统调用.shell是一个特殊的应用程序,为运行其他应用程序提供一个接口. 登录: 系统口令文件通常是/etc/passwd.口令文件中的登录项由7个以冒号…
1.UNIX体系结构 什么叫做内核? 内核是一种软件,它控制计算机硬件资源,并提供程序的运行环境. 什么叫操作系统? 在广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,如可以向用户提供服务之类的. 什么是系统调用? 内核的接口被称为系统调用.公用函数库构建在系统调用接口上,应用软件既可使用公用函数库,也可使用系统调用. 2.文件和目录 创建新目录的时候会自动创建两个文件名:.和... 在根目录下,这两个文件是同一个文件. 目录是一个包含许多目录项的文件,在逻辑上,可以认…
程序清单1-1 列出一个目录中的所有文件(ls命令的简要实现): [root@localhost unix_env_advance_prog]# cat prog1-.c #include "apue.h" #include <dirent.h> int main(int argc, char *argv[]) { DIR *dp; struct dirent *dirp; ) err_quit("Usage: ls directory_name");…
一.线程 线程是进程某程序段的一次运行. 1.线程共享资源,利用共享的资源,线程很容易能够互相通信 (1)进程代码段:每个线程有各自的寄存器组,在运行时期拷贝给cpu寄存器,来确定运行的是哪段代码段. (2)公共数据:堆(指的全局堆,线程自身创建的堆独享),全局变量,静态变量,常量, (3)打开文件描述符 (4)信号处理器,信号处理器是p_thread库提供的对信号处理的系统函数. (5)进程id和进程组id 2.线程独享资源 (1)栈,自己申请的堆, (2)信号屏蔽码:每个线程对不同信号的处理…
1 shell程序就是位于应用软件与系统调用之间的程序   每个用户登录系统,系统就会为用户分配shell (用户的登录的口令文件 在  /etc/passwd 2 ls filename  运行原理   敲入命令传入main函数参数   根据argv[1]创建一个指向DIR的目录文件指针,并根据argv[1]创建目录    在从该目录文件读取文件,返回一个指向struct_dirent类型的指针    从而输出文件的名称 代码如下 #include <stdio.h> #include &l…
1.用户在登陆linux系统时,先键入登录名,然后键入口令.系统在其口令文件(通常是/etc/passwd文件)中查看登录名.口令文件中的登陆项由7个以冒号分隔的字段组成,它们是:登录名.加密口令.数值用户ID.数值组ID.注释字段.起始目录以及shell程序.huangcheng:x:1000:1000:ubuntu,,,:/home/huangcheng:/bin/bash2.在支持线程的环境中,多个线程共享进程地址空间,每个线程都有属于它自己的局部errno以避免一个线程干扰另一个线程. …
接触网络编程一年多了,最近在系统的学习vnp两本书,对基础知识做一些总结,希望理解的更透彻清晰,希望能有更多的沉淀. 1.套接口地址 针对IPv4和IPv6地址族,分别定义了两种类型的套接口地址:sockaddr_in和sockaddr_in6,两种套接口地址结构如下所示: /* IPv4地址族套接口地址结构 */ struct in_addr { in_addr_t s_addr; /* IPv4地址,网络序存储 */ } struct sockaddr_in { uint8_t sin_le…
今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题...... 一.TCP/IP的标准化 1.TCP/IP的含义 一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称. 具体点,IP或ICMP.TCP或UDP.TELENT或FTP.以及HTTP等都属于TCP/IP协议,而TCP/IP一词泛指这些协议,有时称它们为TCP/IP为网际协议…
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 下面是协议层从底层至顶层的一个模型图: 一.计算机网络的背景 1.1 计算机的发展 有人说:"20世纪最为的发明就是计算机",自诞生伊始,计算机经历了一系列发展,从大型通用计算机.超级计算机.小型机.个人电脑.工作站以及现如今笔记本.平板.智能手机等, 计算机已经彻底融入了我们的生活 1…
一.基础知识 1.Linux简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持32位和64位硬件.Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统. 简单点说,linux就是一个操作系统,和windows.mac的os x 一样. Linux的版本号又分为两部分:内核(Kernel)版本和发行(Distributi…
####TCP.IP背景**关键词:ARPANET,UNIX,分组交换技术,*ARPANET(阿帕网),也是全球互联网的鼻祖.阿帕网的成功也充分证明了基于分组交换技术的通信方法的可行性.*20世纪70年代前半叶,ARPANET中的一个研究机构研发出了TCP/IP.*大事件表↓→1969年        ARPANET诞生.开发分组交换技术→1972年        ARPANET取得初步成功.扩展到50个节点.→1975年        TCP/IP诞生.→1982年        TCP/IP…