unix
codinghonor
这个作者很懒,什么都没留下…
展开
-
buffered, unbuffered, direct IO的区别
1、buffered IObuffered IO指的是在内核和用户程序之间设置了一层缓冲区,用来提高IO读写的效率;当用户读取数据时,用户缓冲区已经将buffer读满,下次读时,可以直接从buffer中读,无需再经过内核和硬盘;当用户写数据时,写入用户buffer区,定时将这段buffer的数据flush到硬盘上,减少向内核发送write命令的次数;- 读取:硬盘--->内核缓冲区原创 2015-04-25 18:18:58 · 3456 阅读 · 1 评论 -
解读条件变量
经常会遇到 “测试某个变量是否满足条件,才执行某个action” 这样的业务逻辑,一般而言,有两种方式来实现:1、主动不断轮询,探测while(!test_cond){ ... ... ; sleep(XX);}2、被动通知被动通知的一种实现:条件变量调用pthread_cond_wait后,会探测是否满足条件,如果不满足,则把原创 2015-02-15 16:01:38 · 201 阅读 · 0 评论 -
pthread_atfork解读
apue中的对pthread_atfork的使用说明:pthread_atfork(void (*prepare)(void),void (*parent)(void), void(*child)(void))prepare在父进程fork创建子进程之前调用,这里可以获取父进程定义的所有锁;child fork返回之前在子进程环境中调用,在这里unlock prepare获得的锁;原创 2015-02-11 20:09:10 · 6676 阅读 · 1 评论 -
文件描述符总结
总结几种常见情况下,打开文件后的数据结构:1、一个进程打开两个不同的文件2、同一个进程2次打开同一个文件共享V节点,每个fd各自对应一个文件表项3、dup后共享文件表和v节点4、fork后子进程完全复制父进程的文件描述符列表,父子进程对应的fd共享文件表和v节点;5、记录锁多进程写同一个文件,需要加建议性/强制原创 2015-02-15 15:51:02 · 359 阅读 · 0 评论 -
判断进程是否存在的几种方法
一共有四种方法,见粗体。注意受pid回收的影响,可能不准确;Checking for the Existence of a Process Verifying the existence of a particular process ID doesn’t guarantee that a par-ticular program is still running. Becaus原创 2015-02-15 17:13:57 · 1208 阅读 · 0 评论 -
前台进程,会话,控制终端,用户的关系
1、 一个会话和一个控制终端一一对应2、 一个控制终端对应一个前台进程组3、一个会话拥有一个前台进程组和若干后台进程组4、 会话中的所有进程都对应同一个控制终端5、 只有前台进程可以read write控制终端6、 控制终端收到一些特殊的信号字符,会发送相应的信号给前台进程组的进程7、 控制终端退出或者控制进程的退出,会发送sighup信原创 2015-02-15 16:57:24 · 837 阅读 · 0 评论