龙空技术网

APUE3阅读笔记(一)基本介绍

小辉算个球 40

前言:

今天我们对“除数为0oracle”大致比较关怀,咱们都需要分析一些“除数为0oracle”的相关文章。那么小编在网上汇集了一些关于“除数为0oracle””的相关文章,希望兄弟们能喜欢,朋友们一起来了解一下吧!

1.登陆系统

查看/etc/passwd文件,通常可以看到如下的内容:

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin

usbmux:x:116:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false

hplip:x:117:7:HPLIP system user,,,:/var/run/hplip:/bin/false

gary:x:1000:1000:Gary Zou,,,:/home/gary:/bin/bash

他们是用冒号分开的字段组成,依次为登陆名,加密口令,数字用户ID,数字组ID,注释字段,起始目录以及shell程序。加密口令统一用x表示,具体内容已经移到另一个文件中。通常会有一个root用户,它的用户ID为0,即超级用户。

shell程序为/bin/false,表明不允许该用户登录当前系统,类似的也有些使用/bin/null,或者/bin/true。

当提供的shell程序为/bin/nologin时,它打印可定制的出错信息。

这里nobody用户名也很常见,目的是使任何人都可以登陆系统,但nobody的用户ID为65534,表明系统不提供任何特权,只能访问人人皆可读写的文件。

我们可以用finger命令来查看某个用户何时登陆过系统。

gary@debian:~$ finger -p gary

Login: gary Name: Gary Zou

Directory: /home/gary Shell: /bin/bash

On since Thu Nov 22 19:33 (PST) on :0 from :0 (messages off)

On since Thu Nov 22 19:34 (PST) on pts/0 from :0

16 minutes 27 seconds idle

所有操作系统都提供多种服务的入口点,由此程序向内核请求服务。这些入口点被称为系统调用。linux3.2提供了380个系统调用,FreeBSD8.0提供了超过450个的系统调用。系统调用接口是在《unix程序员手册》的第二部分说明,是用C语言定义的。UNIX为每个系统调用在标准C库中设置一个同样名字的函数,用户进程用C调用库函数,库函数再用系统所需要的技术调用相应的内核服务。

常见的系统调用有哪些?

2.常见概念

程序(program):物理上是磁盘上某个目录中的文件,内核可以使用exec函数将这个文件读入内存,并执行程序。第八章将说明这些exec函数。

进程(process):就是程序执行的一个实例。有些操作系统用task表示这个概念。一个程序执行多次就会有多个进程。每个进程都有一个进程ID,进程ID一般是一个非负整数。

有三个用于进程控制的函数,fork,exec和waitpid。

一个进程可以有一个或多个控制线程(thread)。一个进程内的所有线程共享同一地址空间,文件描述符,栈以及进程相关的属性。因此线程在访问共享数据时需要采取同步措施。

/usr/include/errno.h中定义了errno,errno的处理规则:如果没有出错,errno的值不会被清除,任何函数不会将errno设置为0.

如果某个函数出错,并把errno置为EBUSY,接下来的函数如果运行无误,那么你去检查errno的值就一直是EBUSY。根据第二条规则,任何时候strerror(errno)都能返回一个字符串。该函数定义在string.h中。

信号(signal)用于通知进程发生了某种情况,例如某一进程执行了除数为0的除法操作,则操作系统将SIGFPE信号发送给该进程。进程处理该信号有三种方式:忽略,按默认方式处理或提供一个函数进行相应处理。另外,键盘跑做也会产生信号给进程。

时间值。

unix系统使用两种不同的时间值。

1)日历时间。该值是自协调世界时(Coordinated Universal time,UTC)1970年1月1日00:00:00这个特定时间以来经过的秒数的累积值。time_t用于保存这种时间值。

2)进程时间。也被成为CPU时间,用以度量进程使用的CPU资源。单位为tick,这个时间单位也是CPU所能调度的最小时间单位。clock_t保存这种时间值。

度量一个进程的执行时间时,unix系统维护了3个时间值,分别为时钟时间,用户CPU时间和系统CPU时间。其中时钟时间是进程执行的总时间,用户CPU时间是该进程占用的CPU时间,剩下的就是系统占用的CPU时间。因此时钟时间>=用户CPU时间+系统CPU时间。

比如运行一个命令 time -p grep -rn abcdef * > /dev/null 输出结果如下:

real 2.07

user 2.00

sys 0.07

这就表明这个grep操作总共用时2.07秒,占用CPU资源2秒。

IEEE POSIX (portable operating system interface)

POSIX定义了很多可移植操作系统的接口,而且只是定义接口,并不定义实现。所以某个接口可以是系统调用也可以是库函数,在标准中统称为函数。

1990年正式出版了[IEEE 1990]标准,称为POSIX.1,后来又做了勘误和更新,比如加入了thread的接口,比如2008年发布的版本就称为POSIX.1 2008.

标准只有一个,但是实现却有很多种,下面简单说一下名气最大的四种实现。

FreeBSD 加州大学伯克利分校研发的一个版本。可免费使用,作者使用的是FreeBSD8.0linux在GNU公用许可证指导下免费使用。他是linus Torvalds为了替代Minix而研发的。作者使用3.2.0版内核MacOS 核心操作系统称为Darwin,它是Mach内核和FreeBSD系统及其他驱动和内核扩展的结合,作者使用10.6.8Solaris 是sun(被Oracle收购)开发的UNIX版本,它基于SVR4。作者使用solaris 10.

标签: #除数为0oracle