2018年6月25日

linux进程间通信之System V 信号量(semaphore)用法详解

摘要: 信号量是一种不同进程或不同线程间的同步方法,有System V信号量和Posix信号量。本文介绍System V 信号量,其在内核中维护,可用于进程间或线程间的同步,本文只介绍进程间同步。信号量一般有两种,二值信号量(binary semaphore)和计数信号量(counting semaphor 阅读全文

posted @ 2018-06-25 21:46 wudymand 阅读(3022) 评论(1) 推荐(0) 编辑

linux进程间通信之Posix 信号量用法详解代码举例

摘要: Posix信号量不同于System V信号量的信号量集,Posix信号量是单一的信号量,分为有名信号量和无名信号量。Posix有名信号量是使用Posix IPC名字标示的信号量,可用于进程和线程间的同步;Posix无名信号量是指基于内存的信号量,存放在共享内存区中,用于进程与线程间的同步。Posix 阅读全文

posted @ 2018-06-25 21:45 wudymand 阅读(1228) 评论(0) 推荐(0) 编辑

Linux中函数ftok如何产生键值

摘要: 我们在做linux 进程间通信开发时,经常会用到ftok函数去产文唯一键值,那么这个键值是如何产生的呢。函数原型:key_t ftok( const char * fname, int id );应用:key_t key=ftok(".",'A');fname为已经存在的文件名,本文为“.”表示当前 阅读全文

posted @ 2018-06-25 21:44 wudymand 阅读(332) 评论(0) 推荐(0) 编辑

linux进程间通信之Posix消息队列

摘要: Posix消息队列与System V 消息队列的用法很相似,主要有以下区别:1. 对Posix消息队列的读取总是返回最高优先级的最早消息,对System V 消息队列的读取可以返回指定优先级的消息。2. Posix 消息队列允许产生一个信号或启动一个线程去向一个空队列写入一个消息,System V消 阅读全文

posted @ 2018-06-25 21:43 wudymand 阅读(413) 评论(0) 推荐(0) 编辑

Linux进程间通信之System V 消息队列

摘要: 消息队列就是一个消息的链表,具有特定的格式以及特定的优先级。对消息队列有写入权限的进程可以向其中按照一定的规则添加新消息,对消息队列有读取权限的进程则可以从消息队列中读走消息。这样两个进程间就实现了通信。System V 消息队列的头文件和函数原型:#include <sys/msg.h>1. 创建 阅读全文

posted @ 2018-06-25 21:39 wudymand 阅读(318) 评论(0) 推荐(0) 编辑

Linux信号signal用法详解及注意事项

摘要: 信号是软件中断,是一种异步通信方式,处理异步的事件。例如我们在终端中运行程序,通过按下键盘“Ctrl+c”,可以发出一个SIGINT中断信号去停止程序运行。信号的处理有3种方法:1. 忽略该信号,大多数信号都可以如此处理。但是SIGKILL和SIGSTOP除外,决不能被忽略。2. 捕获信号,用户自定 阅读全文

posted @ 2018-06-25 21:38 wudymand 阅读(4122) 评论(0) 推荐(0) 编辑

linux进程间通信之命名管道fifo用法及注意事项

摘要: 普通管道pipe只能在相关进程之间使用,例如父子进程。两个完全独立不相关的进程可以使用fifo,也就是命名管道。命名管道fifo头文件及原型:#include <sys/stat.h>int mkfifo(const char *pathname, mode_t mode);函数返回值成功返回0,失 阅读全文

posted @ 2018-06-25 21:36 wudymand 阅读(2059) 评论(0) 推荐(0) 编辑

linux进程间通信之管道(无名管道pipe)实现全双工双向通信

摘要: 管道是什么:1. 管道只能用于具有亲缘关系的进程之间通信。2.管道是一种单工或者说半双工的通信方式,传递信息的方向是固定的,只能由一端传递到另一端。头文件及函数原型:#include <unistd.h>int pipe(int fd[2]);当用pipe 创建管道后,两个文件描述符fd[0],fd 阅读全文

posted @ 2018-06-25 21:35 wudymand 阅读(4723) 评论(0) 推荐(1) 编辑

fopen函数mode模式说明以及与open函数区别

摘要: 函数头文件:#include <stdio.h>函数原型:FILE *fopen(const char *path, const char *mode);FILE *fdopen(int fd, const char *mode);FILE *freopen(const char *path, co 阅读全文

posted @ 2018-06-25 21:33 wudymand 阅读(568) 评论(0) 推荐(0) 编辑

进程和线程,frok和vfork主要区别

摘要: 我们在Linux软件开发时经常会接触到进程和线程,经常会创建进程和线程,那么他们之间主要区别是什么呢。folk和 vfork创建的进程又有什么区别呢。总体归纳如下:fork:子进程会复制父进程的代码段,数据段和堆栈段。vfork: 子进程暂时占用父进程的地址空间,子进程先执行完后,父进程才能执行。一 阅读全文

posted @ 2018-06-25 21:32 wudymand 阅读(543) 评论(0) 推荐(0) 编辑

导航