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

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

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

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

    # 注意這里的位操作運(yùn)算符需要加轉(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信息包過(guò)濾u系統(tǒng),它實(shí)際上由兩個(gè)組件netfilter和iptables組成,這篇文章主要介紹了linux?iptables防火墻-工作常用命令,需要的朋友可以參考下
    2022-10-10
  • linux中Jetty的安裝和配置方法

    linux中Jetty的安裝和配置方法

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

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

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

    詳解Linux 中五個(gè)重啟命令

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

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

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

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

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

    十三個(gè)寫好shell腳本的技巧分享

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

    linux 中vim的用法講解

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

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

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

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

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

最新評(píng)論

玉山县| 新兴县| 南木林县| 虎林市| 饶阳县| 新闻| 铅山县| 东乡| 清远市| 湖南省| 新余市| 登封市| 金沙县| 山丹县| 古蔺县| 亚东县| 定结县| 鄂尔多斯市| 永川市| 阿拉善盟| 嘉禾县| 凤山县| 商都县| 客服| 杭锦后旗| 临沭县| 乌拉特中旗| 西峡县| 丰顺县| 尉氏县| 黄山市| 隆林| 湾仔区| 独山县| 嘉荫县| 武定县| 永年县| 禹城市| 思南县| 阳城县| 上杭县|