文件描述符通常是小的非负整数,kernel就是通过文件描述符来识别文件的。一旦打开或者是创建一个文件,kernel都返回一个文件描述符。
Unbuffered I/O 和 Standard I/O 区别??
书上说道,使用Standard I/O 不同担心buffer size的问题,另一个好处是使得处理lines of input变得简单。比如fgets函数可以读入整行,而read函数只读入确定数目的byte。
最简单的标准输入输出函数是printf。
每一个进程都有一个唯一识别的非负整数。
获取进程ID用getpid函数。
有三个函数用于对进程的控制:fork,exec,waitpid,其中exec有6个变种,我们通常统称为exec。
一个进程里面的所有线程共享相同的地址空间,文件描述符,堆栈以及其它和进程相关的属性。和进程一样,线程也有线程ID,但是每个线程都是针对某一进程来说的,所以某个进程里的线程ID对于另外一个进程来讲是毫无意义的。
获取用户ID: getuid()
获取用户组ID: getgid()
从4.2BSD开始,一个用户可以属于不同的组,最多可以属于16个组。
信号是一种技术,用来告知一个进程某某条件发生了。比如,用0做分母,一个叫SIGFPE的信号就会被送到这个进程。
进程对信号的反应有三种情况:
1.忽视,装没看见。不推荐,最好别这样做。
2.让默认的action发生,比如0做分母时,就结束进程。
3.提供一个我们处理改异常的函数,用来处理该情况。
很多情况下会产生信号。比如按DELETE键,Control+C和quit键。还有就是kill函数。
历史上来看,unix系统主要维护两个不同的时间值:
1.日历时间,从1970年1月1日0时0分0秒到现在时间的秒数,用数据类型time_t表示
2.进程时间,也叫CPU时间,用clock ticks来测量,历史上1秒可以有50,60或者100个tick,数据类型用clock_t表示
当我们测量一个进程的执行时间时,有三个值来表示一个进程:
1.clock time,有时叫wall clock time,指进程运行的全部时间,这个值取决于系统中正在运行的进程的数量。
2.user cpu time : is the CPU time attributed to user instructions.
3.system cpu time: is the CPU time attributed to the kernel when it executes on behalf of the process.
阅读(1649) | 评论(0) | 转发(0) |