亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unix/Linux編程之ftok函數用法

發布時間:2020-07-12 05:59:51 來源:網絡 閱讀:2235 作者:捕風的xiao_k 欄目:編程語言

linux 中ftok函數的用法


1、函數作用: 系統建立IPC通訊(如消息隊列、共享內存時)必須指定一個ID值。通常情況下,該id值通過ftok函數得到
2、函數原型:
        #include <sys/types.h>
                 #include <sys/ipc.h>

     key_t ftok(const char *pathname, int proj_id);
3、函數參數解析:
    a、const char *pathname:用于產生key_t值的文件名(文件必須存在),
    b、int proj_id:proj_id是子序號,雖然為int,但是只有8個比特被使用(0-255)
4、返回值
    當成功執行的時候,一個key_t值將會被返回,否則 -1 被返回。
5、函數內部實現過程
    在一般的UNIX實現中,是將文件的索引節點號取出,前面加上子序號得到key_t的返回值。
如指定文件的索引節點號為65538,換算成16進制為 0x010002,而你指定的ID值為38,
換算成16進制為0x26,則最后的key_t返回值為0x26010002。

注意


    1、假如要確保key_t值不變,要目確保ftok的文檔不被刪除 ,要么不用ftok,指定一個固定的key_t值。
    2、另外說一句:在aix等操作系統上,有多個文檔系統,會出現分布在不同的文檔系統上的兩個文檔具備相同的索引節點號,
    此時用ftok對這兩個文檔進行操 作,只要id參數不變,得到的key_t值相同,造成創建消息隊列失敗。但是這種情況相當少見罷了。
    因為在開發中涉及多種系統平臺,在系統移植時發現ftok()函數在不同平臺下存在一定的差異性。
    當然,根本原因不在于ftok()本身,而應該是 操作系統對于文件系統管理的差異性。

6、測試用例:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/ipc.h>

int main(int argc,char *argv[])
{
        key_t key;
        if(3 != argc)
        {
                printf("usage:ftok <patname> <pri_id>\n");
                exit(1);
        }

        key = ftok(argv[1],atoi(argv[2]));
        printf("key = %x\n",key);
        return 0;

}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄陵县| 襄汾县| 牟定县| 北票市| 邵阳县| 象州县| 南昌县| 北辰区| 西和县| 南平市| 阿克陶县| 梅州市| 新巴尔虎左旗| 苗栗市| 泗阳县| 达州市| 望都县| 芦溪县| 峡江县| 安塞县| 金塔县| 张北县| 阳高县| 呼玛县| 枞阳县| 宝应县| 卢湾区| 阿拉善左旗| 古田县| 台州市| 昌黎县| 洛扎县| 泸西县| 玉山县| 罗城| 南澳县| 依兰县| 吉木萨尔县| 和田县| 江陵县| 伊春市|