很久没看APUE,今天一位朋友问道关于一个mutex的问题,又翻到了以前讨论过的东西,为了不让自己忘记,把曾经的东西总结一下。
先大体看下网上很多地方都有的关于pthread_cond_wait()的说明:条件变量
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个...
分类:
其他好文 时间:
2014-05-28 01:37:12
阅读次数:
301
1. Unix IPC(InterProcess
Communication)同一主机的各个进程间的IPC:管道、FIFO、消息队列、信号量、共享存储器不同主机上的各个进程间IPC:socket套接字2.
管道管道进行IPC有两个局限:(1) 半双工,即数据只能在一个方向上流动(2) 只能在具有公共...
分类:
其他好文 时间:
2014-05-21 23:03:50
阅读次数:
394
1.
非阻塞I/O低速系统调用时可能会使进程永远阻塞的一类系统调用,包括以下调用:(1)某些文件类型你(网络socket套接字、终端设备、管道)暂无可使用数据,则读操作可能会使调用者永远阻塞(2)如果数据不能立即被(1)中文件类型接受,则写操作会使调用者永远阻塞(3)某些进程间通信函数非阻塞I/O使...
分类:
其他好文 时间:
2014-05-15 16:22:43
阅读次数:
380
(一)
当多个进程企图对共享数据进行某种处理,而最后的结果又取决于进程运行的顺序时,就认为它们发生了竞争关系。避免竞争的条件,给出apue上的一个代码吧:
#include "apue.h"
static void charatatime(char *);
int
main(void)
{
pid_t pid;
TELL_WAIT(); /*set things up for TEL...
分类:
系统相关 时间:
2014-05-15 12:20:22
阅读次数:
408
在学习APUE第4章时候,里面编写了一段递归顺序遍历目录层次的结构的代码,该代码实现了递归访问目录。但是该代码并没有显示降序的方式显示目录树。
因此,我讲代码稍微修改,使其能够按照tree命令的方式显示,同时也统计了各个文件的数量。
#include
#include
#include
#include
#include
#include
#include
#include
using nam...
分类:
其他好文 时间:
2014-05-14 00:02:02
阅读次数:
501
//-------------------------------------1.为什么使用名字好-----------------------------------------
我们应该使用名字而不是数值来标识主机(例如数值206.6.226.33),服务器(例如端口13代表标准的daytime服务器),然而出于以下几个理由,我们应该使用名字而不是数值:
1).名字好记住
2).数值地址...
分类:
其他好文 时间:
2014-05-11 20:39:10
阅读次数:
395
在APUE这本书,第三章与第四章都是在讲一些关于文件操作和目录操作的函数。简单地说明一下涉及到的函数及其使用。
open函数
原型为: #include
int open(const char *pathname, int oflag,.../*mode_t mode*/);
该函数是用来打开或创建一个文件(记住:是文件,不包括目录),第三个参数只有当打开文件不存在时...
分类:
其他好文 时间:
2014-05-11 04:46:16
阅读次数:
336
进程ID
每个进程都有一个唯一的进程ID。几个特殊进程:
0号进程是内核进程,通常是调度进程swapper。1号进程init,是用户进程(以root权限运行/sbin/init),负责初始化几个重要函数:getpid(进程ID)/getppid(父进程ID)/getuid(进程真实用户ID)/geteuid(进程有效用户ID)/getgid(进程真实用户组ID)/getegid(进程有...
分类:
其他好文 时间:
2014-05-08 03:52:27
阅读次数:
376
1. fork
创建新进程fork创建的新进程称为子进程,fork函数调用一次,返回两次。两次返回的唯一区别就是子进程的返回值是0,而父进程的返回值是新子进程的进程ID在fork之后是父进程先执行还是子进程先执行是不确定的,这取决于内核的调度算法fork的一个特性就是父进程的所有打开文件描述符都被复...
分类:
其他好文 时间:
2014-05-08 01:03:08
阅读次数:
361