
APUE
知识
信念Belief行动Action关爱Love始终如一Always自然和谐Nature自律Control高效率Efficiency
展开
-
mydate
#include #include #include #include #include #define STRSIZE 1024int main(int argc,char *argv[]){ FILE *fp = stdout; time_t stamp; time_t stamp1; struct tm *tm; char timestr[原创 2013-10-18 23:53:34 · 1126 阅读 · 0 评论 -
信号量—— semaphore
// 信号量:锁机制,进程并发处理(内核全局)#include #include #include #include #include #include #include #define PROCNUM 20 #define FNAME "/tmp/out"#define LINESIZE 1024static int semid;// 提取资源 -原创 2013-10-26 17:58:53 · 976 阅读 · 0 评论 -
thread execute primer
#include #include #include #define LEFT 30000000#define RIGHT 30000200#define THRNUM (RIGHT-LEFT+1)static void *thr_prime(void *p);//struct thr_arg_st{ int n;};int main(){原创 2013-10-21 23:34:38 · 1185 阅读 · 0 评论 -
线程——create pthread
//// create a pthread// int pthread_create(pthread_t *restrict thread,// const pthread_attr_t *restrict attr,// void *(*start_routine)(void*), void *restrict arg原创 2013-10-21 23:19:13 · 889 阅读 · 0 评论 -
thread_cleanup
// void pthread_cleanup_push(void (*routine)(void*), void *arg);// void pthread_cleanup_pop(int execute);//#include #include #include static void cleanup_func(void *p){ puts(p);}原创 2013-10-21 23:31:10 · 1072 阅读 · 0 评论 -
pthread线程的加锁问题——thread locking problems
1 互斥变量: pthread_mutex_t,本质上说是一把锁,在访问共享资源前对互斥量加锁,访问完成后释放锁。 对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直至当前线程释放该互斥锁。pthread_mutex_lock : 加锁pthread_mutex_unlock:解锁2 条件变量:pthread_cond_t,多个线程协作的一种同步方式,若某个原创 2013-10-21 23:43:03 · 2780 阅读 · 0 评论 -
线程——thread exercise about file
#include #include #include #define THRNUM 20 #define FNAME "/tmp/out"#define LINESIZE 1024#if 0 static pthread_mutex_t foo_mutex = PTHREAD_MUTEX_INITIALIZER; void foo() {原创 2013-10-21 23:37:41 · 1077 阅读 · 0 评论 -
The finite state machine
#include #include #include #include #include #include #include #include "relayer.h"#define TTY1 "/dev/tty11"#define TTY2 "/dev/tty12"#define TTY3 "/dev/tty10"#define TTY4 "/dev/t原创 2013-10-23 23:01:11 · 945 阅读 · 0 评论 -
有限状态机——The finite state machine
依据状态之间是否有包含关系,分以下两种(1)常规状态机。状态机中的所有状态是不相交的、互斥的。(2)层次状态机。状态机中的状态之间要么是互斥的,要么是真包含的,可以用树性结构来描述这些状态集,包含其它状态的状态称为枝节点,不包含其它状态的状态称为叶节点,为方便单树描述,总是设计一个状态包含所有的状态节点,称为根节点。状态机的状态只能停留在叶节点,而不能停留在枝节点,每个枝节点需要指定一个子原创 2013-10-23 23:11:28 · 1853 阅读 · 0 评论 -
openmp——多线程实例
#include #include #define LEFT 30000000#define RIGHT 30000200int main(){ int i,j,mark;#pragma omp parallel for private(j,mark) for(i = LEFT; i { mark = 1; for(j = 2; j {原创 2013-10-23 23:34:11 · 1269 阅读 · 0 评论 -
有限状态机—— FSM(finite-state machine)
//有限状态机 finite-state machine#include #include #include #include #include #include #include #define TTY1 "/dev/tty11"#define TTY2 "/dev/tty12"#define BUFSIZE 1024enum{ STATE原创 2013-10-23 22:50:46 · 2756 阅读 · 0 评论 -
共享内存——The Shared memory
// share the memory space// 出于多个进程之间通信考虑的// 每个IPC的object 通过键,进程识别所用的object#include #include #include #include #include #define MEMSIZE 2048int main(){ int shmid; pid_t pid;原创 2013-10-26 17:55:31 · 1005 阅读 · 0 评论 -
消息队列——The message queue
//消息队列:数据通讯// 点对多,离线通讯。// ftok();索取KEY值//// msgget();创建// msgctl();删除// msgsnd();发送// msqrcv();接收#include #include #include #include #include #include #include "proto原创 2013-10-26 17:52:40 · 1281 阅读 · 0 评论 -
IPC——共享内存
a) 意义:多个进程共享一部分物理内存。访问快,方便 b) 先创建共享内存:int shmget(key_t key, int size, int shmflg) 1. Key:标志共享内存的键值;0/IPC_PRIVATE a) Key=0 ...a) 意义:多个进程共享一部分物理内存。访问快,方便 b) 先创建共享内存:int shmget(key_原创 2013-10-25 23:45:49 · 1008 阅读 · 0 评论 -
linux——fork(进程)
1 #include 2 #include 3 #include 4 5 int 6 main(void) 7 { 8 int i = 0; 9 pid_t fpid;10 printf("i\tson/pa\tppid\tpid\tfpid\n");11 12 for(i = 0; i 13原创 2013-10-18 23:44:07 · 1019 阅读 · 0 评论 -
setjmp——longjmp
#include #include #include static jmp_buf save;static void d(void){ printf("%s():Begin!\n",__FUNCTION__); printf("%s():Jump now!\n",__FUNCTION__); longjmp(save,0); printf("%s()原创 2013-10-18 23:57:08 · 948 阅读 · 0 评论 -
信号掩码——The signal mask
一. linux内部用一个128个字节(多个unsigned long)的结构(sigset_t)表示信号的掩码,在i386平台上就是128/4=32个long,每位对应一个信号的掩码,最大支持128*8 = 1024个信号。现在只有64个信号,所以只要考虑最前面的两个long就可以了。sigset_t mask;unsigned long *pl = (unsigned long*)&m原创 2013-10-20 14:16:52 · 2670 阅读 · 0 评论 -
fork()函数的经典分析——Classic analysis of the fork () function
第一贴:cu上关于fork()函数的精辟分析声明:在别人的博客上看到这篇文章,真的很精辟,把问题一下子讲清楚了。所以,特意转贴在此,向各位高人致敬,也向原贴主致谢!本人不改变原贴的风貌. 作者:ccf 发表于:2006-04-01 17:11:01#include ; #include ; main (原创 2013-10-20 14:49:06 · 1231 阅读 · 0 评论 -
文件锁 fcntl()——File locks
一.fcntl()函数说明:当多个用户共同使用、操作一个文件的情况下,这时,Linux通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态。文件锁包括建议性锁和强制性锁。建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重己有的锁。在一般情况下,内核和系统都不使用建议性锁。强制性锁是由内核执行的锁,当文件上锁进行写入操作时,内核将阻止其他任何文件对其进行读写操作。采用强制性锁原创 2013-10-20 16:55:04 · 2744 阅读 · 0 评论 -
Linux信号集 —— Signal set and using
1. 信号集概念 信号集是一个能表示多个信号的数据类型,sigset_t set ;set即一个信号集。 既然是一个集合,就需要对集合进行添加/删除等操作。 int sigemptyset(sigset_t *set); 将set集合置空 int sigfillset(sigset_t *set); 将所有信号加入set集合 int sigaddset(sigs原创 2013-10-20 12:01:18 · 2028 阅读 · 0 评论 -
IPC——信号量(semaphore)
a) 作用:保护临界资源,控制进程。访问临界资源时,先查看信号量,若信号量为1表示资源有空,那么才可以访问临界资源。同时把信号量-1; 1. 实质:是一个整数,初始值为1; 2. 二值信 ...a) 作用:保护临界资源,控制进程。访问临界资源时,先查看信号量,若信号量为1表示资源有空,那么才可以访问临界资源。同时把信号量-1; 1. 实质:是一个整数,初原创 2013-10-25 23:37:04 · 957 阅读 · 0 评论 -
关于fork进程的理解——Understanding about the fork process
先看看一段fork的程序 int main(){ pid_t pid; 语句 a; pid = fork(); 语句 b;} 1.当程序运行到 pid = fork()时,这个进程马上分裂(fork的中文意思)成两个进程,我们称为父进程和子进程,子进程是父进程的副本,副本的意思是子进程把父进程的数据空间,堆和原创 2013-10-20 16:22:57 · 1024 阅读 · 0 评论 -
Linux内核简介——Introduction of the kernel
LINUX内核简介:a) LINUX体系结构: i. 用户空间:应用程序,C库 ii. 内核空间:系统调用接 ... LINUX内核简介:a) LINUX体系结构: i. 用户空间:应用程序,C库原创 2013-10-25 23:44:03 · 869 阅读 · 0 评论 -
管道通信——Pipeline communication
//using pipe the communication between f proccess and c proc ////#include #include #include #include #include #include #define BUFSIZE 1024int main(){ int ret,retw; pid_t pid原创 2013-10-26 18:01:28 · 1502 阅读 · 0 评论 -
进程间通信——IPC
linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间原创 2013-10-25 23:00:03 · 891 阅读 · 0 评论 -
IPC——消息队列
a) 本质:消息链表 b) 分类: 1. POSIX消息队列:可移植操作系统接口 2. 系统V:随内核持续的,只有在内核重启和人工删除,才会被删除。每个消息队列对应唯一的键值 c) ...a) 本质:消息链表 b) 分类: 1. POSIX消息队列:可移植操作系统接口 2. 系统V:随内核持续的,只有在内核原创 2013-10-25 23:34:39 · 899 阅读 · 0 评论