在Linux进程通信中,共享内存的利用很普遍。 总结一下自己学习的资料吧。
共享内存是系统考虑多个进程之间的通信而保留的内存区域。 /proc/sys/kernel/目录包含一些共享内存限制,例如最大共享内存空间字节数shmmax和系统范围内最大共享内存空间标识符数shmmni,可以手动调整,但不建议使用。
注:使用共享内存并退出程序后。 如果未通过程序使用shmctl ()删除共享内存,请在命令行中使用ipcrm命令删除共享内存。 如果你不管,它就一直放在那里。
简要介绍ipcs和ipcrm命令。
获取ipc信息:
ipcs [-m|-q|-s]
-m输出有关共享内存(shared memory )的信息
输出有关-q消息队列的信息
-s输出有关“断路器”(semaphore )的信息
%ipcs -m
删除ipc
ipcrm -m|-q|-s shm_id
%ipcrm -m 105
请参见--------------------------------------------------------- -
共享存储器是一种非常重要且常用的进程间通信方式,相对于其他IPC机制,由于其速度最快、效率最高,被广泛应用于各种软件产品和APP应用开发中。 System V IPC为UNIX平台上的共享内存APP应用制定了统一的API标准,对UNIX/Linux平台上的跨平台开发非常有用。 开发者基本上可以开发出基于同一组源代码同时支持AIX、Solaris、HP-UX、Linux等平台的产品。
$ ipcs -ma
ipcstatusfrom/dev/memasofthujul 1708336048336039 beist 2014
tidkeymodeownergroupcreatorcgroupnattchsegszcpidlpidatimedtimectime
Shared Memory:
m0x 5800120 c---rw-rw-rootsystemrootsystem 1134217728198383276614336008360541433600836005414336000836000836000083:000041414141414141414141414142
m 1310730 x 16 f d87e8--- rw---r---- Oracle DBA Oracle DBA a 92184104497966437083604836048360298360483360483:48:298:291414029149.
m 1310740 x 78054448---rw---r---Oracle DBA oracledb a 61061847044620682892133604033601913360403360403360191433:191414141414143
m 1310750 xfffffff---rw---rw---rw---rootsystemrootsystem 1409643874836048360483602283:483360483604836048360483604836048348348360483448348348348348344483448348348
m40x 6953 e7d8--- rw---r---Oracle DBA oracledb a 9303316992541846443603736049133604913360491360373604914914333:491491414914333330
m50x 47 f 35784---rw-r---Oracle DBA oracledb a 950464358459096783141336035360181336033601813360360336018181:3603603360181814143333333333333333:36013:1
m 60 xfffffff---rw---rootsystemrootsystem 026843545662182621821436010336001336001336001336000133600001336000614:0031
m 2621510 xfffffff---rw---rootsystemrootsystem 126843545679010790109336001336047 no---entry 9:01336047
m 80 x0d 0004 da---rw-rw-rootsystemrootsystem 114404578462354833604533603183360318360318360453:3143333:46.
$
IPCS:checkthesharedmemoryallocationonasystem
ipcrm:manuallydeallocatesharedmemoryonasystem
获取ipc信息:
ipcs [-m|-q|-s]
-m输出有关共享内存(shared memory )的信息
输出有关-q消息队列的信息
-s输出有关“断路器”(semaphore )的信息
# ipcs -m
IPC status from as of 2007年04月10日星期二18点32分18秒CST
T ID KEY MODE OWNER GROUP
Shared Memory:
m0x 50000 d43---rw-r---r---root root
m 5010 x1e 90 c 97 c---rw-r---Oracle db a
# IPCS|awk ' { print $2}
501
删除ipc (清除共享内存信息) ) )
ipcrm -m|-q|-s shm_id
%ipcrm -m 501
fori in ` IPCS|awk ' {打印$2} `
do
ipcrm -m $i
ipcrm -s $i
唐
PS-ef ' ora _ '|grep-v grep-VCRs ' { print $2} '|xargs kill-9
获取ipc信息:
ipcs[-m|-q|-s]
-m输出有关共享内存(sharedmemory )的信息
输出有关-q消息队列的信息
-s输出有关“断路器”(semaphore )的信息
# ipcs -m
IPC status from as of 2007年04月10日星期二18点32分18秒CST
T ID KEY MODE OWNER GROUP
Shared Memory:
m0x 50000 d43---rw-r---r---root root
m 5010 x1e 90 c 97 c---rw-r---Oracle db a
# IPCS|awk ' { print $2}
501
删除ipc (清除共享内存信息) ) )
ipcrm-m|-q|-sshm_id
%ipcrm-m501
fori in ` IPCS|awk ' {打印$2} `
do
ipcrm -m $i
ipcrm -s $i
唐