UNIX环境高级编程笔记-1
来源:互联网 发布:ubuntu系统联网 编辑:程序博客网 时间:2024/05/09 00:19
内核的接口称为系统调用。shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口。系统在其口令文件中查看登录名。
口令文件通常是/etc/passwd,口令文件中的登录项由7个以冒号分隔的字段组成,如
sar:x:205:105:Stephen Rago:/home/sar:/bin/ksh,分别是登录名,加密口令,数值用户ID,数值组ID,注释字段,起始目录,以及shell程序。
UNIX文件系统是由目录和文件组成的一种层次结构,目录的起点称为根(root),其名字是一个字符/,目录是一个包含许多目录项的文件。文件属性指的是文件类型(是普通文件还是目录),文件大小,文件的权限以及文件的最后修改时间。
目录中的各个名字称为文件名。不能出现在文件名字中的字符只有斜线(/)和空操作符。因为斜线用来分隔构成路径名,空操作符则用来终止一个路径名。
创建新目录时会自动创建两个文件名:.(称为点)和(..)(称为点-点)。点指当前目录,点-点则指父目录。在最高层次的目录中,点-点和点相同。
一个或多个以斜线分隔的文件名序列构成路径名,以斜线开头的路径名称为绝对路径名,否则称为相对路径名。如/etc是一个绝对路径名,而home/hkm/work是一个相对路径名。
每个进程都有一个工作目录,有时称为当前工作目录,所有相对路径名都从工作目录开始解释。系统登录时,工作目录设置为起始目录,该起始目录从口令文件中相应用户的登陆项中取得。
文件描述符:通常是一个小的非负整数,内核用它标识一个特定进程正在访问的一个文件。当内核打开一个已经存在或者创建一个新文件时,它返回一个文件描述符,在读写文件时可以使用它。
标准输入,标准输出和标准出错
每当运行一个新程序时,所有的shell都为其打开三个文件描述符:标准输入(standard input),标准输出,(standard output)和标准出错(standard error)。大多数shell可以提供一种方法,使其中任何一个或者三个能重定向到某个文件。如ls>fdile.tes
函数open,read,write,lseek以及close提供了不用缓冲的IO,这些函数都使用文件描述符。
标准IO函数提供一种对不用缓冲I/O函数的带缓冲数据的接口,使用标准I/O函数无需担心如何选取最佳的缓冲区的大小。
程序和进程
程序是放在磁盘上的,处于某个目录中的一个可执行文件。使用6个exec函数中的一个由内核将程序读入存储器。
程序的执行实例称为进程。每个进程有一个唯一的数字标识,称为进程ID,总是一个非负整数。
用于进程控制的函数有fork,wait,waitpid。
fork创建子进程,新进程是父进程的复制品,fork有两个返回值,fork向父进程返回新子进程的进程ID,对子进程返回0.
waitpid返回子进程的终止状态。
wait和waipid的区别以后再说。
在一个进程内的所有线程共享同一地址空间,文件描述符,栈以及与进程相关的资源。线程也用ID标识,但是线程只在它所属的进程内起作用,一个进程中的线程再另一个进程中并无意义。
当UNIX函数出错时,常返回一个负值,而且整形变量errno常被设置为含有附加信息的一个值。文件<errno.h>中定义了符号error以及可以赋予它的各种常量,这些常量都以E开头。
errno的两条规则:
1.如果没出错,其值不会被一个例程清除,仅当函数的返回值指明出错时,才检验其值。
2.任意函数都不会将errno值置为0.
C标准定义了两个函数:
#include <string.h>
char *strerror(int errnum)
将errnum(即errno的值)映射为一个出错的信息字符串,并且返回此字符串的指针。
#include <stdio.h>
void perror(const char *msg)
首先输出一个msg指向的字符串,然后是一个冒号,一个空格,接着是对应于errno值的出错,最后是一个换行符。
例如:EACCES: Permission denied
未完待续...................- 《unix环境高级编程》笔记1
- unix环境高级编程 笔记1
- UNIX环境高级编程笔记-1
- 《 Unix环境高级编程 》笔记
- 《 Unix环境高级编程 》笔记
- 《 Unix环境高级编程 》笔记
- Unix环境高级编程 笔记
- Unix环境高级编程笔记
- 《UNIX环境高级编程》笔记:第1章 UNIX基础知识
- unix环境高级编程笔记--高级IO
- unix环境高级编程笔记(1)-----进程环境
- 【unix高级环境编程】1.进程环境笔记1
- unix环境高级编程1
- unix 环境高级编程1
- 《 Unix环境高级编程 》1~5章笔记
- Unix环境高级编程阅读笔记(1)
- UNIX环境高级编程——学习笔记(1)
- unix 环境高级编程阅读笔记1-5章节
- POJ 2464 Brownie Points II(线段树:扫描线)
- OS——处理器管理
- 提升移动应用的“心理响应速度”
- JVM工作原理之八:JVM性能优化二
- 判断IP地址有效性
- UNIX环境高级编程笔记-1
- mahout学习相关进展--1
- 【案例】看渠道商如何利用互联网思维打赢翻身仗
- 目前流行的缺陷管理工具
- Latex Note
- Tomcat Port 8009 与AJP13协议
- 机器学习自学指南
- 计数排序算法详解
- 【pair_简单贪心】#3 A. Shortest path of the king