linux共享内存会自动清空吗

linux共享内存会自动清空吗,第1张

试了一下,对于正常退出如果调用了清理函数,则内存会自动清空,如果不调用则不会清空。对于异常退出还没来得及调用清理函数则共享内存不会被清理。而且一般情况下如果我们没有清理,下次重启该进程共享内存不会重新分配还会使用原来未被清理的。另外我们可以在linux的命令行下使用命令删除:1,查看共享内存的id或keyipcs -m2,删除共享内存ipcrm -m id//根据id删除ipcrm -M key//根据key删除ipcrm shm id/key//根据id/key删除

可以使用samba协议。Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

共享内存查看

使用ipcs命令,不加如何参数时,会把共享内存、信号量、消息队列的信息都打印出来,如果只想显示共享内存信息,使用如下命令:

[root@localhost ~]# ipcs -m

------ Shared Memory Segments --------

keyshmid owner perms bytes nattch status

0x00000000 1867776root 600393216 2 dest

0x00000000 1900545root 600393216 2 dest

0x00030021 1703938zc666131104 1

0x0003802e 1736707zc666131104 1

0x00030004 1769476zc666131104 1

0x00038002 1802245zc666131104 1

0x00000000 1933318root 600393216 2 dest

0x00000000 1966087root 600393216 2 dest

0x00000000 1998856root 600393216 2 dest

0x00000000 2031625root 600393216 2 dest

0x00000000 2064394root 600393216 2 dest

0x0014350c 2261003cs66633554432 2

0x00000000 2129932root 600393216 2 dest

0x00000000 2162701root 600393216 2 dest

0x00143511 395837454 root 66610485761

其中:

第一列就是共享内存的key;

第二列是共享内存的编号shmid;

第三列就是创建的用户owner;

第四列就是权限perms;

第五列为创建的大小bytes;

第六列为连接到共享内存的进程数nattach;

第七列是共享内存的状态status。其中显示“dest”表示共享内存段已经被删除,但是还有用户在使用它,当该段内存的mode字段设置为SHM_DEST时就会显示“dest”。当用户调用shmctl的IPC_RMID时,内存先查看多少个进程与这个内存关联着,如果关联数为0,就会销毁这段共享内存,否者设置这段内存的mod的mode位为SHM_DEST,如果所有进程都不用则删除这段共享内存。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8335395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存