unix环境高级编程第六章笔记】的更多相关文章

口令文件 阴影口令 组文件 附属组ID 登录账户记录 系统标识 口令文件<\h2> /etc/passwd文件是UNIX安全的关键文件之一.该文件用于用户登录时校验用户的口令,文件中每行的一般格式为: 用户名: x :用户ID:用户组ID:说明信息:个人主目录:SHELL 对于第二项x来说是密码,但由于安全原因密码已经被移至其他文件,因此使用x来代替. UNIX系统提供了两个用于获取passwd文件中条目的函数,在给出用户ID或者用户名之后,这两个函数即可查看相关信息.其头文件及函数原型如下:…
文件和目录 start fstart lstart函数 一旦给出pathname, start函数就返回了与此命名文件有关的信息结构 #include <sys/start> int stat(const char *pathname, struct stat *buf); int fstat(int fd, struct stat *buf); int lstat(const char *pathname, struct stat *buf);/*能观察到符号链接*/ 参数: pathnam…
文件描述符 1.文件描述符的概念 对于内核而言,所有打开的文件都会用一个文件描述符来引用,打开或和创建一个新文件的时候,内核会给进程返回一个文件描述符,而当使用read write时,可以使用这个文件描述符来代替文件. UNIX系统下,使用0 1 2 来分别与标准输入 标准输出 标准出错输出相关联. 2.文件操作有关的函数 open函数 /*fcntl.h定义了很多宏和fcntl函数原型*/ #include <fcntl.h> int open(const char *pathname ,i…
本章是UNIX系统中进程控制原语,包括进程创建.执行新程序.进程终止,另外还会对进程的属性加以说明,包括进程ID.实际/有效用户ID. 进程标识 每个进程某一时刻在系统中都是独一无二的,它们之间是用一个非负数的唯一ID来表示和区分,虽然是唯一的,但成立条件是某一时刻,进程ID可以在不同时刻复用,当一个进程终止后,其ID就称为复用的候选者,UNIX系统通常会有一个延迟的复用算法,使得新创建的进程ID不同于最近一段时间内终止的进程ID,以避免将新进程误认为是之前已终止的那个进程. 进程ID为1的通常…
本章涉及C/C++程序中main函数是如何被调用的.命令行参数如何传递给main函数.程序的内存空间布局.程序如何使用环境变量.程序如何终止退出. main函数 C程序或C++程序总是从main函数开始执行的,其中这个总是从main函数开始执行是我们人为约定的,因为main( )函数也是当做一个函数被调用的,所以需要被系统知道被调函数的名字,当然现在从main函数开始执行已经成为语言标准了,在汇编层次,我们可以把程序起始执行地址指向一个自定义的名字. 书本上7.2节这里的翻译很是生硬,字面意思直…
守护进程daemon是一种生存周期很长的进程.它们通常在系统引导时启动,在系统关闭时终止.守护进程是没有终端的,它们一直在后台运行. 守护进程的特征 在Linux系统中,可以通过命令 ps -efj 来查看守护进程.例如下图: 从上图中可以看到 TTY 一列,该列显示每个进程的终端,对于问号(?)显示的进程,表明该进程没有控制终端.而CMD列中方括号[ ]显示的进程表明这是一个内核守护进程,对于用户守护进程则没有方括号[ ]. 编程规则 如果需要编写进程守护程序,则需要遵循一些基本规则,具体如下…
在第8章学习了进程的控制原语,通过各种进程原语可以对进程进行控制,包括新建进程.执行新程序.终止进程等.在使用fork( )产生新进程后,就出现了进程父子进程的概念,这是进程间的关系.本章更加详细地说明进程间的关系,包括:进程组.会话.作业等. 终端登录 当我们通过硬件终端而非网络终端登录到系统时,UNIX会有一个登录流程,该流程是个大概的过程,各个实现可能存在细微差别,但总体流程不变. 在通过终端登录时,init进程负责为每个终端fork一个子进程,由子进程对应登录终端设备.init进程会fo…
UNIX系统的正常运作需要用到大量与系统有关的数据文件,例如系统用户账号.用户密码.用户组等文件.出于历史原因,这些数据文件都是ASCII文本文件,并且使用标准I/O库函数来读取. 口令文件 /etc/passwd文件是UNIX安全的关键文件之一.该文件用于用户登录时校验用户的口令,文件中每行的一般格式为: 用户名:x:用户ID:用户组ID:说明信息:个人主目录:SHELL 对于第二项x来说是密码,但由于安全原因密码已经被移至其他文件,因此使用x来代替. UNIX系统提供了两个用于获取passw…
本章是关于C语言标准I/O库的,之所以在UNIX类系统的编程中会介绍C语言标准库,主要是因为UNIX和C之间具有密不可分的关系.由于UNIX系统存在很多实现,而每个实现都有自己的标准I/O库,为了统一,ISO C做出了标准说明. 标准I/O库相比于操作系统的I/O库,具有更高的效率和可移植性,前者是因为标准I/O库提供了缓冲和块长度优化功能,后者是因为使用标准I/O库的代码不仅能在各UNIX系统上移植,也能在支持标准C的非UNIX系统上移植. 流和FILE对象 UNIX系统I/O是建立在文件描述…
所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储空间.提供时间等. UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程序运行环境.这种软件有个专业术语名称:内核.因为它小且位于计算机体系的核心.如下图所示: 上图中的系统调用包裹在内核的外围,隔离开内核以保护内核.同时,系统调用作为和内核沟通的中间桥梁. 公用函数库通常指的是C/C++的标准库,例如libc.glibc.libstdc++.libc++等标准库,不同…