linux文件共享伺服器搭建「linux共享文件夾怎麼設置」

文章目錄

  • 1.命名管道
  • 2.共享內存
  • 3.共享內存的介面
  • 4.共享內存的標識符和共享內存的操作句柄的區別是什麼?
  • 5.刪除共享內存

1.命名管道

  • 命名管道也是內核中開闢的一段緩存區,這段緩存區是有標識符的:意味著:不同的進程,不需要有親緣關係,只需要通過標識符就能找到該緩存區
  • 命名管道的創建
  • mkfifo [命名管道文件]
    p:代表的文件類型為管道文件
  • 函數創建
    mkfifo函數
  • 特性
  • 命名管道的生命周期也是跟隨者進程的
  • 命名管道是具有標識符的
  • 其他的特性和匿名管道是一致的

2.共享內存

  • 原理
  • 在物理內存當中開闢了一段空間
  • 這段物理內存的空間,可以被不同的進程附加到自己的共享區當中
  • 附加的進程,通過操作共享區,來交換數據
「Linux」進程間通信---共享內存

3.共享內存的介面

  • 創建共享內存
  • int shmget(key_t key, size_t size, int shmflg)
    key:共享內存標識符,這個標識符相當於共享內存的身份證,程序員第一次創建的時候,可以隨意給值,只要和當前操作系統當中的其他的共享內存標識符不重複
    size:共享內存的大小,單位:位元組
    shmflg:① IPC_CREAT:如果共享內存不存在,則創建共享內存
    IPC_EXCL:需要搭配IPC_CREAT使用,這樣的宏在搭配使用的時候,還是採用按位或的方式(核心就是點陣圖)
    eg:IPC_CREAT | IPC_EXCL
    如果想要獲取的共享內存,已經存在,則報錯。如果想要獲取的共享內存,是剛剛新創建出來的共享內存,則返回操作句柄
  • 總結:使用shmget這個函數的時候一定要自己剛剛創建出來的共享內存
  • 返回值:返回的是共享內存的操作句柄
  • 共享內存命令
  • ipcs:查看共享內存
  • ipcrm -m [shmid]:刪除共享內存
  • 共享內存的聲明周期是跟隨著操作系統內核的
  • 將共享內存附加到進程
  • void shmat(int shmid, const void shmaddr, int shmflg)
    shmid:共享內存的操作句柄
    shmaddr:附加到共享內存的什麼虛擬地址,允許傳遞NULL值讓操作系統幫我們選擇附加到共享內存區當中的那個地址,這個地址通過該函數的返回值返回給我們
    shmflg:① SHM_RDONLY:規定當前進程只能對共享內存進行讀操作
    0可讀可寫
  • 返回值:返回共享內存附加到共享區的地址
  • 結論:進程在讀取共享內存的時候,是訪問,並不是拿走!
  • 將共享內存和進程分離
  • int shmdt(const void *shmaddr)
    shmaddr:shmat的返回值
  • 操作共享內存
  • int shmctl(int shmid, int cmd, struct shmid_ds *buf)
    shmid:共享內存操作句柄
    cmd:告訴shmctl函數需要做什麼操作
    IPC_STAT:獲取當前共享內存的屬性信息,放在buf中,buf是出參
    IPC_SET:設置共享內存的屬性信息,是用buf來進行設置的,buf是入參
    IPC_RMID:刪除共享內存,buf可以直接傳遞NULL
    buf:共享內存的結構體

4.共享內存的標識符和共享內存的操作句柄的區別是什麼?

  • 標識符:是用來標識共享內存的,相當於共享內存的身份證,意味著不同的進程可以通過標識符找到這個共享內存
  • 操作句柄:進程可以通過操作句柄來對共享內存進行操作(,附加,分離,刪除)

5.刪除共享內存

  • 當使用shmctl或者使用ipcrm,刪除共享內存之後,共享內存就實際被釋放掉了
  • 當共享內存被釋放掉之後,共享內存的標識符會被設置為0x00000000,表示其他進程不能通過之前的標識符找到該共享內存,並且共享內存的狀態會被設置為dest(destroy)
  • 共享內存被釋放掉之後,但是還是有進程在附加著共享內存,當前描述共享內存的結構體並沒有被釋放,直到當前共享內存的附加進程數量為0的時候才會釋放掉

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/269818.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-16 13:19
下一篇 2024-12-16 13:19

相關推薦

發表回復

登錄後才能評論