#include pid_t fork(void); Returns: 0 in child, process ID of child in parent,?1 on error
Unix可以使用系统函数fork()创建一个新进程。
fork()执行一次返回两次。
返回值:
0:
...
分类:
其他好文 时间:
2014-08-29 14:44:18
阅读次数:
207
Unix提供的最基本的时间服务室日历时间(纪元时间),也就是计算1970年1月1日0时0分0秒到当前的秒数。该秒数用time_t表示。
typedef long time_t; /* 时间值time_t 为长整型的别名*/
1、获取/设置时间
1.1 time和time_t
函数time()可以用于获取当前日历时间
#include t...
分类:
其他好文 时间:
2014-08-28 16:19:10
阅读次数:
359
1.open
#include FILE *fopen(const char *restrict pathname,const char *restrict type)FILE *freopen(const char *restrict pathname,const char *restrict type,FILE *restrict fp);FILE *fdopen(int fd,co...
分类:
其他好文 时间:
2014-08-25 14:59:34
阅读次数:
242
缓冲的几个基本概念
缓冲的作用:减少系统read和write的次数。
全缓冲
系统标准I/O缓冲区被写满时才进行真正的I/O操作。
磁盘文件一般使用全缓冲
全缓冲使用malloc来分配缓冲区
行缓冲
系统遇到换行符时进行真正的I/O操作。
Te...
分类:
其他好文 时间:
2014-08-25 11:57:14
阅读次数:
214
引言:apue中提到文件记录锁的释放中的两条规则:当进程终止的时候,进程在文件上建立的记录锁会全部释放;当关闭文件,执行close(fd)函数的时候,进程释放描述符可以引用的文件上的任何一把锁。对于第一条规则的理解应该没有分歧。但对于第二条规则的理解,则会出现疑惑,执行close(fd)的时候,是仅...
分类:
其他好文 时间:
2014-08-21 20:56:44
阅读次数:
238
基本概念
内核使用3个数据结构描述一个打开的文件:进程表、文件表、V节点表
首先了解3种数据结构的概念
1 进程表
每一个进程有一个进程表。进程表里是一组打开的文件描述符,如标准输入0,标准输出1,标准错误2...
2 文件表
进程打开一个文件时,内核就为该文件创建一个文件表。...
分类:
其他好文 时间:
2014-08-20 18:04:32
阅读次数:
220
apue说到非堵塞要分析两种系统调用,低速的系统调用和其它的系统调用。那么低速的系统调用可能是进程堵塞。例如对不存在的数据进行读操作,可能是调用者永远阻塞,因为他得等读到了数据才返回;如果某个文件描述符拒绝某个写操作,写操作不能完成而阻塞;打开某些类型没有准备好的文件的文件也会引起阻塞;以及对强制性...
分类:
其他好文 时间:
2014-08-06 18:20:51
阅读次数:
165
保证在某一时刻只有一个线程对数据进行操作的基本方法:(1)关中断:通过关闭时钟中断来停止线程调度(不现实)(2)数学互斥方法:Peterson算法 bakery算法(3)操作系统提供的互斥方法:临界区、互斥量、信号量等(windows)(4)cpu原子操作:把一些常用的指令设计成了原子指令,在win...
分类:
编程语言 时间:
2014-08-01 19:00:42
阅读次数:
266
当一个进程终止时,内核就向其父进程发送SIGCHLD信号。因为子进程终止是个异步事件,所以这种信号也是内核向父进程发的异步通知。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用执行的函数。对于这种信号的系统默认动作是忽略它。调用wait或waitpid的进程发生的情况如下:1.如果所有子进...
分类:
其他好文 时间:
2014-07-29 10:38:06
阅读次数:
231
基本概念:在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。...
分类:
其他好文 时间:
2014-07-28 23:46:24
阅读次数:
355