最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell腳本實現(xiàn)ftok函數(shù)

 更新時間:2015年01月27日 09:32:46   投稿:junjie  
這篇文章主要介紹了Shell腳本實現(xiàn)ftok函數(shù),ftok函數(shù)是操作系統(tǒng)底層中很有名的一個函數(shù),本文講在Shell中如何實現(xiàn)同樣算法的函數(shù),需要的朋友可以參考下

“古老的 Sys IPC 仍然有好幾種有效的用途。三種 IPC 對象是共享內(nèi)存,信號燈和消息?!碑?dāng)使用到 IPC 的這些對象時,你需要為每個對象創(chuàng)建一個 Key。雖然理論上來說我們在定義一個 IPC Key 的時候可以使用任意自己喜歡的 Key ,但為了避免與其他的程序產(chǎn)生定義重復(fù),在 UNIX/Linux 中一般會使用 key_t ftok(const char *path, int id) 函數(shù)來生成一個比較唯一的 Key 值。然而,“每個人都討厭 System V IPC。它比打孔紙帶還慢,使用與文件系統(tǒng)完全無關(guān)少得可憐的名字空間,使用人類討厭的數(shù)字給它的對象命名,并且還常常自己忘記自己的對象,你的系統(tǒng)管理員經(jīng)常需要用 ipcs(1) 查找那些丟失了的對象并且用 ipcrm(1) 刪除它們,還得求老天保佑不要在用光內(nèi)存以后才發(fā)現(xiàn)問題?!?對于來實現(xiàn)進(jìn)程監(jiān)控/自動重啟Bash Shell 腳本來說,在腳本里面硬編碼進(jìn)當(dāng)前程序用到的 Key 值肯定不是個好辦法,最好是實現(xiàn)相同算法的 ftok 函數(shù)。

復(fù)制代碼 代碼如下:

#!/bin/sh
let key=0
function ftok() {
    pathname=$1;
    proj_id=$2;

    str_st_ino=`stat --format='%i' "${pathname}" 2>/dev/null`;
    str_st_dev=`stat --format='%d' "${pathname}" 2>/dev/null`;
    if [ "x${str_st_ino}" = "x" -o "x${str_st_dev}" = "x" ] ; then
        return 1;
    fi

    let st_ino=${str_st_ino}
    let st_dev=${str_st_dev}

    # 注意這里的位操作運算符需要加轉(zhuǎn)義符
    let key1=${st_ino}\&16#FFFF
    let key2=${st_dev}\&16#FF
    let key2=${key2}\<\<16
    let key3=${proj_id}\&16#FF
    let key3=${key3}\<\<24
    let key=${key1}\|${key2}
    let key=${key}\|${key3}
}

function echohelp(){
    echo "ftok generator"
    echo "Usage:ftok pathname projid"
    exit 5
}

if [ $# -ne 2 ] ; then
    echohelp
fi

sPathName=$1
let nProjectID=$2

if [ "${sPathName:0:1}" != "/" ] ; then
    sPathName=${PWD}/${sPathName}
fi

if ! test -f ${sPathName} ; then
    echo "No File Found![${sPathName}]"
    exit 4
fi

ftok "${sPathName}" "${nProjectID}"
echo ${key}

相關(guān)文章

  • linux?iptables防火墻中的工作常用命令

    linux?iptables防火墻中的工作常用命令

    linux系統(tǒng)的防火墻,IP信息包過濾u系統(tǒng),它實際上由兩個組件netfilter和iptables組成,這篇文章主要介紹了linux?iptables防火墻-工作常用命令,需要的朋友可以參考下
    2022-10-10
  • linux中Jetty的安裝和配置方法

    linux中Jetty的安裝和配置方法

    下面小編就為大家?guī)硪黄猯inux中Jetty的安裝和配置方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Shell腳本變量的只讀?刪除?類型及注釋語法基礎(chǔ)

    Shell腳本變量的只讀?刪除?類型及注釋語法基礎(chǔ)

    這篇文章主要介紹了Shell腳本變量的只讀刪除類型及注釋語法基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 詳解Linux 中五個重啟命令

    詳解Linux 中五個重啟命令

    這篇文章給大家介紹了linux中的五個重啟命名及重啟命令的具體說明,需要的朋友參考下吧
    2017-03-03
  • Linux Shell中curl和wget使用代理IP的方法教程

    Linux Shell中curl和wget使用代理IP的方法教程

    這篇文章主要給大家介紹了關(guān)于在Linux Shell中curl和wget使用代理IP的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Shell中建立與使用臨時性文件的方法詳解

    Shell中建立與使用臨時性文件的方法詳解

    由于工作需要shell腳本需要將一些信息保存在臨時文件中。過去很少使用shell腳本,所以這方面經(jīng)驗很少。便在網(wǎng)上上搜索了所有常規(guī)的方法,總結(jié)于此,下面這篇文章主要給大家介紹了在Shell中建立與使用臨時性文件的相關(guān)資料,需要的朋友可以參考下。
    2017-08-08
  • 十三個寫好shell腳本的技巧分享

    十三個寫好shell腳本的技巧分享

    這篇文章主要給大家介紹了關(guān)于寫好shell腳本的13個技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • linux 中vim的用法講解

    linux 中vim的用法講解

    Vim 是 Linux 系統(tǒng)上的最著名的文本/代碼編輯器,也是早年的 Vi 編輯器的加強版,而 gVim 則是其 Windows 版。這篇文章主要介紹了linux 中vim的用法講解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • shell如何記錄用戶的IP與命令詳解

    shell如何記錄用戶的IP與命令詳解

    這篇文章主要給大家介紹了關(guān)于shell是如何記錄用戶的IP與命令的相關(guān)資料,記錄用戶輸入過的命令使用history命令,而記錄用戶的IP可能稍復(fù)雜一些,需要的朋友們下面跟著小編一起來看看吧。
    2017-06-06
  • Linux查詢mac物理地址的方法實現(xiàn)

    Linux查詢mac物理地址的方法實現(xiàn)

    本文主要介紹了Linux查詢mac物理地址的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2007-02-02

最新評論

额济纳旗| 巴里| 云安县| 阳山县| 广元市| 大连市| 苏尼特右旗| 益阳市| 修文县| 鄱阳县| 宝丰县| 明星| 凌源市| 额尔古纳市| 铜山县| 乐昌市| 大兴区| 来宾市| 石屏县| 定边县| 桃园县| 山阴县| 汕头市| 梁平县| 邵东县| 阜阳市| 枣强县| 乌鲁木齐县| 余姚市| 红安县| 武宁县| 朝阳区| 榕江县| 新津县| 阿勒泰市| 宝应县| 新乐市| 台安县| 新沂市| 太仓市| 苏州市|