![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 360 阅读 · 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 · 341 阅读 · 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 · 476 阅读 · 0 评论 -
进程控制
进程标识符 每个进程都有一个非负整型表示的唯一进程ID。进程ID可以重用。 ID为0的进程通常是调度进程,常常被称为交换进程。ID为1的进程通常是init进程,在自举过程结束时由内核调用。ID为2是页守护进程,负责支持虚拟存储系统的分页操作。 除了进程ID,每个进程还有一些其他的标识符。下列函数返回这些标识符。 #include pid_t getpid(void); //进程ID原创 2015-01-21 00:58:59 · 387 阅读 · 0 评论 -
标准I/O库
标准I/O库处理很多细节,例如缓冲区分配,以优化长度执行I/O等。这些处理使用户不必担心如何选择使用正确的块长度。这使得它便于用户使用,但是如果不较深入地了解I/O库函数的操作,也会带来一些问题。 流和FILE对象 标准I/O文件流可用于单字节或多字节字符集。流的定向决定了所读、写的字符是单字节还是多字节流的。当一个流最初被创建时,它并没有定向。如若在未定向的流上使用一个多字节I/O函原创 2015-01-21 00:45:56 · 314 阅读 · 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 · 425 阅读 · 0 评论 -
系统调用和库函数
系统调用和库函数都以C函数的形式出现,两者都为应用程序提供服务。必要时我们可以替换库函数,通常却不能替换系统调用。 两者职责不同,以存储器分配函数malloc为例,其使用sbrk系统调用分配另外一块空间给进程,而库函数malloc则在用户层次管理这一空间。 应用程序可以调用系统调用或者库函数,而很多库函数则会调用系统调用。 系统调用通常提供一种最小接口,而库函数通常提供比较复杂的功能。如不带原创 2015-01-11 00:09:17 · 341 阅读 · 0 评论 -
文件I/O
unix系统中的大多数文件I/O只需用到5个函数:open、read、write、lseek以及close。 其中read和write函数被称为不带缓冲的I/O,不带缓冲指的是每个read和write都调用内核中一个系统调用。 文件描述符 文件标识符是非负整数。打开现存文件或新建文件时,内核会返回一个文件标识符。读写文件也需要使用文件标识符来指定等待读写的文件。 习惯上,标准输入(原创 2015-01-11 00:17:09 · 445 阅读 · 0 评论 -
信号
信号概念 信号是软件中断。 产生信号的条件有: (1)当用户按某些终端键时,引发终端产生的信号。如Ctrl+C引发SIGINT。 (2)硬件异常产生信号:除数为0、无效内存的引用等等。 (3)进程调用kill(2)函数可将信号发送给另一个进程或进程组。 (4)用户可用kill(1)命令将信号发送给其他进程。 (5)当检测到某种软件条件已经发生,并应将其通知有关进程时也产生信号。例如S原创 2015-01-21 01:06:54 · 463 阅读 · 0 评论 -
守护进程
守护进程是在后台运行且不与任何控制终端关联的进程。 守护进程没有控制终端通常源于它们由系统初始化脚本启动。然而守护进程也可能从某个终端由用户在shell提示符下键入命令行启动,这样的守护进程必须亲自脱离与控制终端的关联,从而避免与作业控制、终端会话管理、终端产生信号等发生任何不期望的交互,也可以避免在后台运行的守护进程非预期地输出到终端。 编程实例: #include #include原创 2015-01-08 16:44:24 · 428 阅读 · 0 评论