随笔分类 -  unp-ipc

摘要:要点 shell查看命令:ipcs m 主要函数 例子 c int id=shmget(ftok("/shmmsg",0),length,oflag); char ptr=shmat(id,NULL,0); struct shmid_ds buff; shmctl(id,IPC_STAT,&buff 阅读全文
posted @ 2016-09-03 09:27 cfans1993 阅读(134) 评论(0) 推荐(0)
摘要:要点 与mmap配合使用 open与shm_open的区别,open打开磁盘上的普通文件,shm_open创建和打开的文件在/dev/shm文件夹下,该文件夹对应的是内存 gcc编译时加参数 lrt shm_open的第一个参数名字的形式: /name, 如"/myshm" 基本函数 shm_ope 阅读全文
posted @ 2016-09-03 09:26 cfans1993 阅读(209) 评论(0) 推荐(0)
摘要:信号量对比 二值信号量:其值要么0要么1,比如互斥锁就是这种类型 计数信号量:其值为0或某个正整数,比如POSIX 信号量 计数信号量:一个或多个信号量构成一个集合,每个都是计数信号量,比如System V信号量 shell查看命令:ipcs s 基本函数 ftok函数:用于生成一个唯一的key_t 阅读全文
posted @ 2016-08-27 20:26 cfans1993 阅读(131) 评论(0) 推荐(0)
摘要:作用 信号量的值为0或正整数,就像红灯与绿灯,用于指示当前是否可以接受任务. 信号量对进程和线程都适用. gcc编译时需加 lpthread 基本函数 信号量的相关函数与标准文件函数非常相似,可以理解文件的读写,只是读写对象不同而已 例子 c include "./unpipc.h" include 阅读全文
posted @ 2016-08-27 20:25 cfans1993 阅读(197) 评论(0) 推荐(0)
摘要:作用 记录锁与读写锁很相似, 记录锁也分读和写两种操作, 但它们的作用对象分别是进程和线程. 多个进程对同一文件进行访问时,记录锁可以锁定文件的某一个区间,以读操作锁定时允许其它进程进行继续加读锁, 以写操作锁定时不允许其它进程添加读锁或写锁. 记录锁只对加锁的函数fcntl进行检测, 如果其它进程 阅读全文
posted @ 2016-08-23 19:19 cfans1993 阅读(198) 评论(0) 推荐(0)
摘要:作用 互斥锁在任一时刻只允许有一个线程访问关键资源, 不管是读取或写操作. 读写锁将互斥锁的功能一分为二, 分成读与写两种操作, 当进行读取操作时允许多个线程同时访问, 当进行写操作时只允许一个一个线程访问 基本函数 例子 两个线程用读锁读取内容; 两个线程用写锁修改内容 阅读全文
posted @ 2016-08-22 20:48 cfans1993 阅读(137) 评论(0) 推荐(0)
摘要:作用 互斥锁用于确保关键资源在修改时只有一个操作者 条件变量类似银行的叫号,协调各个操作者的操作顺序.当前一个操作者操作完成时,叫正在等待的下一个操作者前来操作. 在不引入条件变量之前,互斥锁会使其它线程处于空等状态,不断进行锁状态的检查.条件变量引入后,使相关的其它线程处于睡眠状态,当前操作者完成 阅读全文
posted @ 2016-08-21 22:03 cfans1993 阅读(152) 评论(0) 推荐(0)
摘要:消息的基本属性 System V的消息属性包含在一个msqid_ds的结构中 消息格式: 由一个结构组成,第一个long参数类型表示消息类型(怎么解读消息由用户自己定义与系统无关), 且其值必须大于0; 第二个为消息内容, 其长度和数据类型可自定义; 除第一个结构成员固定外, 其它成员的数量也可以自 阅读全文
posted @ 2016-08-19 22:48 cfans1993 阅读(201) 评论(0) 推荐(0)
摘要:注意 在涉及到posix消息的函数时, gcc 编译时要加 lrt参数, 如 gcc lrt unpipc.c mqpack.c send.c o send gcc lrt unpipc.c mqpack.c receive.c o receive posix消息的name必须以/开头, 例 ./s 阅读全文
posted @ 2016-08-07 19:59 cfans1993 阅读(190) 评论(0) 推荐(0)
摘要:简介 用write/read来简单模拟消息, 没有添加信号控制, 同时读取消息后也没有清除缓冲区 unpipc.h在另一篇中 mesg.h mesg.c 简单例子 阅读全文
posted @ 2016-08-03 22:18 cfans1993 阅读(212) 评论(0) 推荐(0)
摘要:unpipc.h unpipc.c c include "unpipc.h" void err_quit(char fmt,...){ int errno_save=errno; va_list va; va_start(va,fmt); vfprintf(stderr,fmt,va); if(er 阅读全文
posted @ 2016-08-03 22:17 cfans1993 阅读(390) 评论(0) 推荐(0)
摘要:pipe 子进程从终端读取一个文件名, 通过管道将文件名传递给父进程 父进程收到文件名后, 读取文件内容并通过管道传递给子进程 子进程接收到文件内容并输出到终端 popen/pclose popen的打开属性为读或写 写时表示向子进程传递命令, 读时表示从子进程读取命令的执行结果 FIFO 在管道的 阅读全文
posted @ 2016-08-02 18:18 cfans1993 阅读(197) 评论(0) 推荐(0)