2018年6月25日

linux进程间通信之Posix共享内存用法详解及代码举例

摘要: Posix共享内存有两种非亲缘进程间的共享内存方法:1). 使用内存映射文件,由open函数打开,再由mmap函数把返回的文件描述符映射到当前进程空间中的一个文件。2). 使用共享内存区对象,由shm_open打开一个 Posix IPC名字。再由mmap把返回的描述符映射到当前进程的地址空间。Po 阅读全文

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

linux进程间通信之System V共享内存详解及代码示例

摘要: 共享内存是最快最为高效的进程间通信方式,当共享内存映射到共享它的某个进程的地址空间后,进程间的数据传递就不再牵扯到内核,进程可以直接读取内核,不需要通过内核系统调用进行数据拷贝。一般使用情况,从共享内存中写入或读取数据的进程间需要做同步,例如通过信号量,互斥锁去同步。共享内存有System V 共享 阅读全文

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

linux IPC对象的持续性的说明

摘要: 我们在做进程间通信开发时,要了解管道,FIFO,消息队列,信号量,共享内存等类型的对象在系统中存在多少时间,这个就是IPC对象的持续性(persistence)。一般有三种持续性,按由低到高依次为随进程持续的IPC(进程维护),随内核持续的IPC(内核维护),随文件系统持续的IPC(文件系统维护)。 阅读全文

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

linux之Posix IPC名字说明

摘要: Posix IPC三种进程间通讯方式消息队列,信号量,共享内存都要使用Posix IPC名字进行标示。mq_open(),sem_open(),shm_open()函数的第一个参数就是Posix IPC名字,他可能是文件系统中一个真实存在文件的路径名,也可能不是。Posix IPC名字一般以斜杠“/ 阅读全文

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

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

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

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

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

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

posted @ 2018-06-25 21:45 wudymand 阅读(1320) 评论(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 阅读(354) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

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

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

posted @ 2018-06-25 21:38 wudymand 阅读(4381) 评论(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 阅读(2136) 评论(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 阅读(4915) 评论(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 阅读(607) 评论(0) 推荐(0) 编辑

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

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

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

Linux的read和write 函数注意事项

摘要: Linux的read和write 函数注意事项 阅读全文

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

linux系统函数open,create中flags和mode参数总结

摘要: 我们在linux系统下编程,经常会用到I/O 系统函数去操作文件,再用到open和create函数去创建和打开文件时,函数中的参数如何理解呢。int open(const char *pathname,int flags)int open(const char *pathname,int flags 阅读全文

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

virtualbox ,centos 的多网卡如何设置

摘要: 假设eth0是NAT,另外一块(eth4)是Host-Only.#首先确认网卡MAC[root@localhost ~]# ifconfig -a | grep HWeth0 Link encap:Ethernet HWaddr 08:00:27:B2:9F:F5eth4 Link encap:Et 阅读全文

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

ubuntu的linux 下如何直接进入命令行终端,不进入可视桌面

摘要: 修改/etc/X11/default-display-manager值为/usr/sbin/gdm,则进入图形界面值为false,则进入控制台修改/etc/X11/default-display-manager如果值为/usr/sbin/gdm,则进入图形界面如果值为false,则进入控制台(命令行 阅读全文

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

阿里云主机apache如何查看百度蜘蛛baiduspider的访问记录log

摘要: 进入apache的安装路径,例如”Apache-2.2.29/conf“目录编辑工具打开httpd.conf大概在200行左右找到以下语句 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combine 阅读全文

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

导航