亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++共享內存刪除的陷阱

 更新時間:2022年01月06日 10:56:06   作者:CPP開發(fā)前沿  
這篇文章主要介紹了C++共享內存刪除的陷阱講解,當進程結束使用共享內存區(qū)時,要通過函數(shù) shmdt 斷開與共享內存區(qū)的連接。下面來看看具體問題都是怎么解決的吧

文章轉自微信公眾號:CPP開發(fā)前沿

當進程結束使用共享內存區(qū)時,要通過函數(shù) shmdt 斷開與共享內存區(qū)的連接。該函數(shù)聲明在 sys/shm.h 中,其原型如下:
 

int shmdt(const void *shmaddr);

參數(shù) shmaddr 是 shmat 函數(shù)的返回值。

進程脫離共享內存區(qū)后,數(shù)據結構 shmid_ds 中的 shm_nattch 就會減 1 。但是共享段內存依然存在,只有 shm_attch 為 0 后,即沒有任何進程再使用該共享內存區(qū),共享內存區(qū)才在內核中被刪除。一般來說,當一個進程終止時,它所附加的共享內存區(qū)都會自動脫離。
我們通過:
 

int shmctl( int shmid , int cmd , struct shmid_ds *buf );

來刪除已經存在的共享內存:

  • 第一個參數(shù),shmid,是由shmget所返回的標記符。
  • 第二個參數(shù),cmd,是要執(zhí)行的動作。他可以有三個值:

命令 描述:

  • IPC_STAT 設置shmid_ds結構中的數(shù)據反射與共享內存相關聯(lián)的值。
  • IPC_SET 如果進程有相應的權限,將與共享內存相關聯(lián)的值設置為shmid_ds數(shù)據結構中所提供的值。
  • IPC_RMID 刪除共享內存段。
  • 第三個參數(shù),buf,是一個指向包含共享內存模式與權限的結構的指針,刪除的時候可以默認為0。

如果共享內存已經與所有訪問它的進程斷開了連接,則調用IPC_RMID子命令后,系統(tǒng)將立即刪除共享內存的標識符,并刪除該共享內存區(qū),以及所有相關的數(shù)據結構;

如果仍有別的進程與該共享內存保持連接,則調用IPC_RMID子命令后,該共享內存并不會被立即從系統(tǒng)中刪除,而是被設置為IPC_PRIVATE狀態(tài),并被標記為”已被刪除”(使用ipcs命令可以看到dest字段);直到已有連接全部斷開,該共享內存才會最終從系統(tǒng)中消失。

需要說明的是:一旦通過shmctl對共享內存進行了刪除操作,則該共享內存將不能再接受任何新的連接,即使它依然存在于系統(tǒng)中!所以,可以確知, 在對共享內存刪除之后不可能再有新的連接,則執(zhí)行刪除操作是安全的;否則,在刪除操作之后如仍有新的連接發(fā)生,則這些連接都將可能失?。?/p>

Shmdt和shmctl的區(qū)別:

hmdt 是將共享內存從進程空間detach出來,使進程中的shmid無效化,不可以使用。但是保留空間。
shmctl(sid,IPC_RMID,0)則是刪除共享內存,徹底不可用,釋放空間。

到此這篇關于C++共享內存刪除的陷阱的文章就介紹到這了,更多相關共享內存刪除的陷阱內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Qt實現(xiàn)線程與定時器的方法

    Qt實現(xiàn)線程與定時器的方法

    本文主要介紹了Qt實現(xiàn)線程與定時器的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++ move()函數(shù)案例詳解

    C++ move()函數(shù)案例詳解

    這篇文章主要介紹了C++ move()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • C語言實現(xiàn)員工工資管理系統(tǒng)

    C語言實現(xiàn)員工工資管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)員工工資管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C語言深入探索遞歸的特點

    C語言深入探索遞歸的特點

    程序調???的編程技巧稱為遞歸 recursion)函數(shù)??調???就是遞歸,你也可以理解成是?種嵌套結構,但遞歸分為倆部分,第?是“遞”,進?嵌套結構。第?是”歸“,最終會?步?步返回。第?次接觸遞歸都會很懵,慢慢理解這個過程就明?了
    2022-06-06
  • C++文件的操作及小實驗示例代碼詳解

    C++文件的操作及小實驗示例代碼詳解

    這篇文章主要介紹了C++文件的操作及小實驗,對于文件,它是一個流對象,對文件的操作無非是讀和寫,通過本文的學習大家將會理解文件的具體操作
    2022-05-05
  • 深入理解C++中的文件操作

    深入理解C++中的文件操作

    這篇文章主要給大家深入的介紹了C++中的文件操作,文件的操作對每個程序員來說都是很重要的,本文的介紹的很詳細,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • C語言實現(xiàn)消消樂小游戲

    C語言實現(xiàn)消消樂小游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)消消樂小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++實現(xiàn)紅黑樹核心插入實例代碼

    C++實現(xiàn)紅黑樹核心插入實例代碼

    紅黑樹是一種二叉搜索樹,但在每個結點上增加一個存儲位表示結點的顏色,可以是Red或Black,下面這篇文章主要給大家介紹了關于C++實現(xiàn)紅黑樹核心插入的相關資料,需要的朋友可以參考下
    2023-06-06
  • C++?typedef常見用法詳解

    C++?typedef常見用法詳解

    這篇文章主要介紹了C++?typedef用法詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • C語言數(shù)據結構系列篇二叉樹的概念及滿二叉樹與完全二叉樹

    C語言數(shù)據結構系列篇二叉樹的概念及滿二叉樹與完全二叉樹

    在上一章中我們正式開啟了對數(shù)據結構中樹的講解,介紹了樹的基礎。本章我們將學習二叉樹的概念,介紹滿二叉樹和完全二叉樹的定義,并對二叉樹的基本性質進行一個簡單的介紹。本章附帶課后練習
    2022-02-02

最新評論