
APUE
文章平均质量分 79
uestcjerry
这个作者很懒,什么都没留下…
展开
-
使用readdir和readdir_r读取目录
readdir线程不安全版本readdir_r线程安全版本写两个demo:#include #include int main(int argc, char *argv[]){ DIR *dp; struct dirent *dirp; if ((dp = opendir(argv[1])) == NULL) {原创 2014-12-16 15:10:42 · 2774 阅读 · 0 评论 -
fork进程控制
完整了解UNIX进程控制是十分重要的。对我们而言,必须熟练掌握的几个函数:fork,exec系列,_exit,wait和waitpidwaitpid可以等待一个特定进程的结束wait相当于: waitpid( -1, &status, 0 );关于fork:如果子进程在父进程之前终止,父进程可以通过wait或者waitpid获得子进程的状态,内核为每个终原创 2014-12-30 15:12:54 · 712 阅读 · 0 评论 -
volatile和sig_atomic_t
volatile影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,每次使用时都需要去内存里重新读取它的值,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如:volatile int i=10;int j =原创 2015-01-18 11:50:34 · 738 阅读 · 0 评论 -
标准IO
标准IO都是围绕流进行流的定向决定了单字节还是多字节,最初创建的流没有定向。freopen(3) 清除一个流的定向, fwide(3) 设置流的定向标准IO提供的目的:减少使用read和write的次数,对每个IO流进行自动缓冲管理标准IO提供三种缓冲方式:一:全缓冲所谓冲洗 flush :对标准IO缓冲区的写操作1:在标准IO库方面,f原创 2014-12-22 22:08:43 · 510 阅读 · 0 评论 -
线程:避免死锁
线程互斥量pthread_mutex_t 类型初始化一:静态分配,可以设置为常量 PTHREAD_MUTEX_INITIALIZER二:调用 pthread_mutex_init(3)若是动态分配,则需要在释放时调用 pthread_mutex_destroy(3)加锁 / 解锁 pthread_mutex_lock(3) 阻塞至互斥变量解锁原创 2015-02-03 00:01:36 · 564 阅读 · 0 评论 -
readdir仿写ls(1)
man 3 readdirman 3 opendir#include #include #include int main(int argc, char *argv[]){ DIR *dp; struct dirent *dirp; if (argc != 2) { fprintf(stdout, "%s", strerr原创 2014-12-22 21:59:27 · 487 阅读 · 0 评论 -
进程调度和进程时间
进程调度: 由内核决定:调度策略,调度优先级nice值决定优先级,nice越低优先级越高nice的范围在 [ 0 , 2* NZERO - 1 ]NZERO是系统默认的nice值只有特权进程允许提高调度权限关于NZERO:定义NZERO的头文件因系统而异,除了头文件,Linux3.2 可以通过非标准的sysconf参数 _SC_NZERO 来访问NZERO的值原创 2015-01-11 15:14:30 · 835 阅读 · 0 评论 -
同步拷贝文件read write fcntl
使用fcntl获取文件状态标志,修改之后再设置回去不能只是执行 F_SETFD 或者 F_SETFL,这样会关闭以前设置的标志位#include #include #include #define BUFSIZE 4096int main(void){ char buf[BUFSIZE]; /* * enable to write原创 2014-12-16 22:30:36 · 516 阅读 · 0 评论 -
信号知识之abort(3) system(3) sleep(3) POSIX.1实现
abort(3) 使程序异常终止,将SIGABRT信号发送给调用进程(进程不应忽略)ISO C规定,调用它将向主机环境递送一个未成功终止的通知,即调用 raise(SIGABRT)而 raise(3) 等价于:单线程: kill(getpid(), signo);多线程; pthread_kill(pthread_self(), signo);#includ原创 2015-01-19 21:48:01 · 1091 阅读 · 0 评论