1. 程式人生 > >ftok函式引數解析

ftok函式引數解析

轉載https://blog.csdn.net/u013485792/article/details/50764224

關於ftok函式,先不去了解它的作用來先說說為什麼要用它,共享記憶體,訊息佇列,訊號量它們三個都是找一箇中間介質,來進行通訊的,這種介質多的是。就是怎麼區分出來,就像唯一一個身份證來區分人一樣。你隨便來一個就行,就是因為這。只要唯一就行,就想起來了檔案的裝置編號和節點,它是唯一的,但是直接用它來作識別好像不太好,不過可以用它來產生一個號。ftok()就出場了。ftok函式具體形式如下:

key_t ftok(const char *pathname, int proj_id);

其中引數fname是指定的檔名,這個檔案必須是存在的而且可以訪問的。id是子序號,它是一個8bit的整數。即範圍是0~255。當函式執行成功,則會返回key_t鍵值,否則返回-1。在一般的UNIX中,通常是將檔案的索引節點取出,然後在前面加上子序號就得到key_t的值。

有關該函式的三個常見問題:

1.pathname是目錄還是檔案的具體路徑,是否可以隨便設定

2.pathname指定的目錄或檔案的許可權是否有要求

3.proj_id是否可以隨便設定,有什麼限制條件

解答:

1、ftok根據路徑名,提取檔案資訊,再根據這些檔案資訊及project ID合成key,該路徑可以隨便設定。

2、該路徑是必須存在的,ftok只是根據檔案inode在系統內的唯一性來取一個數值,和檔案的許可權無關。

3、proj_id是可以根據自己的約定,隨意設定。這個數字,有的稱之為project ID; 在UNIX系統上,它的取值是1到255;

作者:satellite13
來源:CSDN
原文:

https://blog.csdn.net/u013485792/article/details/50764224
版權宣告:本文為博主原創文章,轉載請附上博文連結!