1. 程式人生 > >45.Linux/Unix 系統程式設計手冊(下) -- System V IPC 介紹

45.Linux/Unix 系統程式設計手冊(下) -- System V IPC 介紹

1.System V IPC 介紹
	1.訊息佇列
		訊息佇列是用來程序之間傳遞訊息的,與管道有點像,但存在2個重要的差別。
		1.訊息佇列存在邊界
		2.每條訊息都包括一個整形的type 欄位,並且可以通過型別的選擇訊息而無需以訊息被寫入的順序來讀取訊息

	2.訊號量
		允許多個程序同步它們的動作。一個訊號量是一個由核心維護的整數值。

	3.共享記憶體
		共享記憶體是的多個程序能夠共享記憶體。

2.IPC key
	建立 IPC key:
	1.隨機的選取一個整數值作為 key 值。
	2.在建立 IPC 物件的 get 呼叫中將 IPC_PRIVATE 常量作為 key 的值。
	3.使用 ftok()函式生成一個 key.

	ftok() 使用 i-node 號來生成 key 值,而並沒有使用檔名來生成 key 值。由於 ftok 演算法依賴 i-node,因此在應用程式的生命週期中,
  不應該將檔案刪除和重新建立,因為重新建立檔案時,很可能會分配到一個不同的 i-node 號。

ftok(); //返回一個適合在後續對某個 System V IPC get 系統呼叫進行呼叫時使用的 key。
ipcs
ipcrm

相關推薦

45.Linux/Unix 系統程式設計手冊() -- System V IPC 介紹

1.System V IPC 介紹 1.訊息佇列 訊息佇列是用來程序之間傳遞訊息的,與管道有點像,但存在2個重要的差別。 1.訊息佇列存在邊界 2.每條訊息都包括一個整形的type 欄位,並且可以通過型別的選擇訊息而無需以訊息被寫入的順序來讀取訊息 2.訊號

37.Linux/Unix 系統程式設計手冊() -- DAEMON

1.daemon特徵 1.它的生命週期很長,通常,一個daemon會在系統啟動的時候被建立並一直執行直至系統被關閉 2.它在後臺執行並且不擁有控制終端。控制終端的缺失,確保了核心永遠不會為daemon自動生成 任何控制訊號以及終端相關的訊號(SIGINT,SIGTS

42.Linux/Unix 系統程式設計手冊() -- 共享庫高階特性

1.動態載入庫 當一個可執行檔案開始執行之後,動態連結器會載入程式的動態依賴列表中的所有共享庫,但有時候需要延遲載入庫是比較有用的。 如只在需要的時候載入一個外掛。動態連結器的這項功能是通過一組 API 實現的。這組 API 被稱為 dlopen API。 d

50.Linux/Unix 系統程式設計手冊() -- 虛擬記憶體操作

1.mprotect() 修改一塊虛擬記憶體區域上的保護資訊 如果一個程序在訪問一塊記憶體區域時違背了記憶體保護,核心會發送 SIGSEGV 訊號。 2.記憶體鎖: mlock() 和 mlockall() 將一塊虛擬記憶體區域鎖進實體記憶體,從而防止它被交換出去。

60.Linux/Unix 系統程式設計手冊() -- SOCKET: 伺服器設計

1.迭代型和併發型伺服器 迭代型:伺服器每次只處理一個客戶端,只有當完全處理完一個客戶端的請求之後才去處理下一個客戶端 併發型:這種型別的伺服器被設計為能夠同時處理多個客戶端的請求 併發型伺服器的其他設計方案: 1.在伺服器上預先建立程序或執行緒,其核心理念如下:

61.Linux/Unix 系統程式設計手冊() -- SOCKET: 高階主題

1.流式套接字上的部分讀和部分寫 如果套接字上可用的資料比 read() 呼叫中請求的資料少,那就可能出現部分讀的現象。 如果沒有足夠的快取空間來傳輸所有的請求,可能會出現部分寫的現象。 2.shutdown(int sockfd, int how) 系統呼叫 在套接

54.Linux/Unix 系統程式設計手冊() -- POSIX 共享記憶體

1.概述 前面介紹了2種允許無關程序共享記憶體區域以便執行 IPC 的技術:System V 共享記憶體和共享檔案對映。這2種技術都有一些不足: 1.System V 共享記憶體模型使用的是鍵和識別符號,這與標準的 Unix IO 模型使用檔名和描述符的做法不一致。這種差

52.Linux/Unix 系統程式設計手冊() -- POSIX 訊息佇列

1.概述 fork() 子程序會接收其父程序的訊息佇列描述符的副本,並且這些描述符會引用同樣的開啟著的訊息佇列的描述。子程序不會 繼承其父程序的任何訊息通知註冊。 當一個程序執行了 exec() 或終止時,所有其開啟的訊息佇列描述符會被關閉。關閉訊息佇列描述符的結

29.Linux/Unix 系統程式設計手冊(上) -- 執行緒:介紹

1.執行緒 執行緒是允許應用程式併發執行多個任務的一種機制。 一個程序可以包含多少執行緒,同一程式中的所有執行緒均會獨立執行相同的程式,且共享一份全域性記憶體區域,其中包括 初始化資料段,未初始化資料段以及堆記憶體段。 若執行緒未分離,則必須使用 pthrea

21.Linux/Unix 系統程式設計手冊(上) -- 訊號:訊號處理器函式

1.可重入函式 如果同一個程序的多條執行緒可以同時安全的呼叫某一函式,那麼該函式就是可重入的。 2.非同步訊號安全函式 指當訊號處理函式呼叫時,可以保證其實現是安全的。如果某一函式是可重入的,又或者 訊號處理函式無法將其中斷,就稱該函式是非同步訊號函式. 3.全域

23.Linux/Unix 系統程式設計手冊(上) -- 定時器與休眠

1.定時器是程序規劃自己在未來某一時刻接獲通知的一種機制 使用 settitimer() 建立的定時器可以跨越 exec() 系統呼叫而得以儲存, 但由 fork() 建立的子程序並不繼承該定時器。 如果正常休眠結束,sleep() 返回 0,如果因為訊號中斷而結

24.Linux/Unix 系統程式設計手冊(上) -- 程序的建立

1.fork, exit, wait, execve 簡介 1.fork() 允許一進城建立一個子程序。子程序獲取父程序的棧,資料段,堆和執行文字段。 2.exit() 終止一程序,將程序佔用的所有資源歸還核心。 庫函式 exit() 位於系統呼叫 _exit()

Linux/UNIX系統程式設計手冊 練習3.8

閒來無聊看了看  3-1. 使用Linux專有的reboot系統呼叫重啟系統時,必須將第二個引數magic2定義為一組magic號(例如:LINNUX_REBOOT_MAGIC2)。這些號有何意義?(將magic號轉換為十六進位制數,對解題會有所幫助。) 剛看的時候 有點暈就去查了查

[溫故而知新] 《Linux/Unix系統程式設計手冊》——檔案I/O

本文對檔案IO這一塊做一些梳理,記錄思考的一些問題和一些待解決的問題,後續會繼續更新。 I hear and I forget,I see and I remember,I do and I understand. Part 1 :通用I

第3章 Linux/UNIX 系統程式設計概念

第3章 系統程式設計概念 本章涉及到的多個主題是系統程式設計的預備知識。我們首先會介紹系統呼叫(system calls)以及在執行過程中的細節。然後我們會講到庫函式,以及它們與系統呼叫之間的區別,同時對C庫(GNU)進行相關描述。 當我們使用系統呼叫或者呼叫一

Linux系統程式設計手冊讀書筆記——第3章 系統程式設計概念

系統呼叫 系統呼叫使處理器從使用者態切換到核心態 每個系統呼叫都有一個唯一的數字來標識 系統呼叫流程: 引數入棧,傳入外殼函式,外殼函式將引數置入特定暫存器(包括系統呼叫編號),執行中斷指定。核心響應中斷指令,呼叫system_call()里程處

Linux系統程式設計手冊第9章-程序憑證

1.各個程序的各種ID,稱為程序憑證。如UID,GID等。具體有實際使用者ID(real user ID), 實際組ID(real group ID),有效使用者ID(effective user ID),有效組ID(effective group ID),儲存

linux系統程式設計手冊原始碼使用

書中原始碼下載地址 http://man7.org/tlpi/code/faq.html下載後進入原始碼目錄 make有錯誤如:check_password_caps.c:15:28: 錯誤:sys/c

linux系統程式設計-6-POSIX標準的訊號量與互斥鎖

[toc] --- ## 前言 [原文](https://www.cnblogs.com/lizhuming/p/14299764.html) ## 8. POSIX訊號量 ### 8.1 概念 * 訊號量(Semaphore)是一種實現程序/執行緒間通訊的機制,可以實現程序/執行緒之間同步或臨界資源的

Hadoop Shell命令(基於linux操作系統上傳載文件到hdfs文件系統基本命令學習)

指南 統計信息 ... err nor 清空 ext -- als Apache-->hadoop的官網文檔命令學習:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html FS Shell 調用文件系統