Liunux -- ftok函數

翻譯自Ubuntu 19版本下的Linux Programmer's Manual
  1. 函數名:ftok – 將一個路徑名和一個對象標識符轉換爲System V IPC鍵值。
  2. 概要:
    #include <sys/types.h>
           #include <sys/ipc.h>
    
           key_t ftok(const char *pathname, int proj_id);
    
  3. 描述:
      函數的作用是:使用指定以pathname(必須引用現有的、可訪問的文件)命名的文件標識和proj_id(必須非零)的8位最小有效的整型值,生成一個以key_t爲類型的System V IPC鍵值。適合與msgget(2)、semget(2)或shmget(2)一起使用。
      當使用相同的proj_id值時,對於所有以pathname命名的相同文件,結果值是相同的。當(同時存在的)pathname或項目proj_id不同時,返回的值應該不同。
      換另一句話說,這個函數的作用是爲了能讓多個進程通信(消息隊列、共享內存),需要使用相同的鍵值來讓多個進程引用同一塊內存區域。
  4. 返回值:
      成功時,將返回生成的key_t值。失敗時返回-1,errno以stat(2)的錯誤值來表示。
  5. 注意:
      在一些老舊的系統中,原型是:
         key_t ftok(char *pathname, char proj_id);
      現在,proj_id是一個int型,但仍然只有8位被使用。典型的用法是將一個ASCII碼作爲proj_id,這就是爲什麼當proj_id爲0時,該行爲被說成未定義。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章