APUE
1100022702
这个作者很懒,什么都没留下…
展开
-
时间和日期例程
由unix内核提供的基本时间服务是计算自国际标准时间公元1970年1月1日00:00:00以来经过的秒数。time函数返回当前时间和日期。#include time_t time(time_t *calptr);时间值总是作为函数值返回。如果参数不为空,则时间值也存放在由calptr指向的单元内。gettimeofday提供了更高的分辨率(最高为微秒级)in原创 2015-01-21 00:48:08 · 370 阅读 · 0 评论 -
线程
线程标识线程ID只在它所属的进程环境中有效。pthread_equal用来对比两个线程ID。int pthread_equal(pthread_t tid1, pthread_t tid2);pthread_self用来获得自身的线程ID。pthread_t pthread_self(void);pthread_create用来创建线程int p原创 2015-01-21 01:16:10 · 346 阅读 · 0 评论 -
进程环境
进程终止有8种方式使进程终止,其中5种为正常终止,它们是(1)从main返回。(2)调用exit。(3)调用_exit或_Exit。(4)最后一个线程从其启动例程返回。(5)最后一个线程调用pthread_exit。异常终止有3种方式,它们是(1)调用abort。(2)接到一个信号并终止。(3)最后一个线程对取消请求做出响应。1.exit函数原创 2015-01-21 00:51:23 · 485 阅读 · 0 评论 -
进程控制
进程标识符每个进程都有一个非负整型表示的唯一进程ID。进程ID可以重用。ID为0的进程通常是调度进程,常常被称为交换进程。ID为1的进程通常是init进程,在自举过程结束时由内核调用。ID为2是页守护进程,负责支持虚拟存储系统的分页操作。除了进程ID,每个进程还有一些其他的标识符。下列函数返回这些标识符。#include pid_t getpid(void); //进程ID原创 2015-01-21 00:58:59 · 396 阅读 · 0 评论 -
标准I/O库
标准I/O库处理很多细节,例如缓冲区分配,以优化长度执行I/O等。这些处理使用户不必担心如何选择使用正确的块长度。这使得它便于用户使用,但是如果不较深入地了解I/O库函数的操作,也会带来一些问题。流和FILE对象标准I/O文件流可用于单字节或多字节字符集。流的定向决定了所读、写的字符是单字节还是多字节流的。当一个流最初被创建时,它并没有定向。如若在未定向的流上使用一个多字节I/O函原创 2015-01-21 00:45:56 · 325 阅读 · 0 评论 -
文件和目录
stat、fstat和lstat函数#include int stat(const char *restrict pathname , struct stat *restrict buf);int fstat(int filedes, struct stat *buf);int lstat(const char *restrict pathname , struct stat原创 2015-01-21 00:34:23 · 433 阅读 · 0 评论 -
系统调用和库函数
系统调用和库函数都以C函数的形式出现,两者都为应用程序提供服务。必要时我们可以替换库函数,通常却不能替换系统调用。两者职责不同,以存储器分配函数malloc为例,其使用sbrk系统调用分配另外一块空间给进程,而库函数malloc则在用户层次管理这一空间。应用程序可以调用系统调用或者库函数,而很多库函数则会调用系统调用。系统调用通常提供一种最小接口,而库函数通常提供比较复杂的功能。如不带原创 2015-01-11 00:09:17 · 346 阅读 · 0 评论 -
文件I/O
unix系统中的大多数文件I/O只需用到5个函数:open、read、write、lseek以及close。其中read和write函数被称为不带缓冲的I/O,不带缓冲指的是每个read和write都调用内核中一个系统调用。文件描述符文件标识符是非负整数。打开现存文件或新建文件时,内核会返回一个文件标识符。读写文件也需要使用文件标识符来指定等待读写的文件。习惯上,标准输入(原创 2015-01-11 00:17:09 · 457 阅读 · 0 评论 -
信号
信号概念信号是软件中断。产生信号的条件有:(1)当用户按某些终端键时,引发终端产生的信号。如Ctrl+C引发SIGINT。(2)硬件异常产生信号:除数为0、无效内存的引用等等。(3)进程调用kill(2)函数可将信号发送给另一个进程或进程组。(4)用户可用kill(1)命令将信号发送给其他进程。(5)当检测到某种软件条件已经发生,并应将其通知有关进程时也产生信号。例如S原创 2015-01-21 01:06:54 · 470 阅读 · 0 评论 -
守护进程
守护进程是在后台运行且不与任何控制终端关联的进程。守护进程没有控制终端通常源于它们由系统初始化脚本启动。然而守护进程也可能从某个终端由用户在shell提示符下键入命令行启动,这样的守护进程必须亲自脱离与控制终端的关联,从而避免与作业控制、终端会话管理、终端产生信号等发生任何不期望的交互,也可以避免在后台运行的守护进程非预期地输出到终端。编程实例:#include #include原创 2015-01-08 16:44:24 · 434 阅读 · 0 评论