我的第一个服务器项目分了前后端,而其中前后端的数据通讯就是使用shm共享内存的方式,所以对于这块会比较有感觉。
1、共享内存是在多个进程之间共享内存区域的一种进程间的通信方式。
2、它是在多个进程间通过对指定内存段进行映射实现内存共享的。
3、这是IPC最快捷的方式
,因为它没有中间商赚差价。
4、多个进程间共享的是同一块物理空间,仅仅是挂载地址不同而已,因此不需要进行复制,可以直接使用这段空间。
1、创建共享内存函数shmget()
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key,size_t size,int shmflg);
参数释义:shmflg取值范围:IPC_CREAT、IPC_EXCL
2、共享内存挂载到进程下函数shmat()
#include <sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid,const void *shmaddr,int shmflg);
参数释义:
shmid:上面那个函数的返回值。
shmaddr:一般放0,系统就会自己去找一块为映射的地址。
3、断开共享内存连接函数shmdt()
#include <sys/types.h>
#include <sys/shm.h>
int shmdt(const void *shmaddr);
4、共享内存控制函数shmctl()
#include <sys/types.h>
#include <sys/shm.h>
int shmctl(int shmid,int cmd,struct shmid_ds *buf);
参数释义:
cmd:IPC_STAT:获取内存段的shmid_ds结构,用buf传出。
IPC_SET:设置内存段中的shmid_ds结构下的ipc_perm成员的值,从buf里面获得。
IPC_RMID:标记某个内存段,已备删除。(只有当连接该内存段的最后一个进程与他断开连接之后才会执行删除)
struct shmid_ds
struct ipc_perm msg_perm;
size_t shm_segsz;
time_t shm_atime;
time_t shm_dtime;
time_t shm_ctime;
pid_t shm_cpid;
pid_t shm_lpid;
shmatt_t shm_nattch;
struct ipc_perm
key_t key;
uid_t uid;
gid_t gid;
uid_t cuid;
gid_t cgid;
unsigned short mode;
unsigned short seq;
我的服务器shm模块
提取码:r3ne
if python 工厂 python代码if
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20
if age >= 18:
print 'your age is', age
print 'adult'
print 'END' 注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上