操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    在使用共享內存的程序異常退出時,由于沒有釋放掉共享內存,在調試時會出現錯誤。您可以使用shell命令來查看與釋放已經分配的共享內存,下面將詳細說明如何進行查看和釋放分配的共享內存的方法。

    預備知識

    Linux中通過API函數創建的共享內存一般都是在程序中使用來釋放的,但是有時為了調試程序,開發人員可能通過 Ctrl + C等方式發送中斷信號來結束程序,此時程序申請的共享內存就不能得到釋放,當然如果程序沒有改動的話,重新運行程序時仍然會使用上次申請的共享內存,但是 如果我們修改了程序,由于共享內存的大小不一致等原因會導致程序申請共享內存錯誤。因此,我們總是希望每次結束時就能釋放掉申請的共享內存。

    有兩種方法可以用來釋放共享內存:

    第一種:如果總是通過Crtl+C來結束的話,可以做一個信號處理器,當接收到這個信號的時候,先釋放共享內存,然后退出程序。

    第二種:不管你以什么方式結束程序,如果共享內存還是得不到釋放,那么可以通過linux命令ipcrm shm shmid來釋放,在使用該命令之前可以通過ipcs -m命令來查看共享內存。

    共享內存查看

    使用ipcs命令,不加如何參數時,會把共享內存、信號量、消息隊列的信息都打印出來,如果只想顯示共享內存信息linux查看信號量命令,使用如下命令:

    [root@ ~]# ipcs -m

    ------ --------

    key shmid owner perms bytes

    root 600 2 dest

    root 600 2 dest

    zc 666 1

    zc 666 1

    zc 666 1

    zc 666 1

    root 600 2 dest

    root 600 2 dest

    root 600 2 dest

    root 600 2 dest

    root 600 2 dest

    linux查看信號量命令_查看linux od 命令源代碼_linux命令 查看系統

    cs 666 2

    root 600 2 dest

    root 600 2 dest

    root 666 1

    其中:

    第一列就是共享內存的key;

    第二列是共享內存的編號shmid;

    第三列就是創建的用戶owner;

    第四列就是權限perms;

    第五列為創建的大小bytes;

    第六列為連接到共享內存的進程數;

    第七列是共享內存的狀態。其中顯示“dest”表示共享內存段已經被刪除,但是還有用戶在使用它,當該段內存的mode字段設置為 時就會顯示“dest”。當用戶調用的時,內存先查看多少個進程與這個內存關聯著,如果關聯數為0,就會銷 毀這段共享內存,否者設置這段內存的mod的mode位為,如果所有進程都不用則刪除這段共享內存。

    共享內存釋放

    要釋放共享內存,需要使用ipcrm命令,使用shmid作為參數,shmid在ipcs命令中會有輸出,下面的命令可以釋放所有已經分片的共享內存:

    # ipcrm

    # ipcs -m | awk ‘$2 ~/[0-9]+/ {print $2}’ | while read s; do sudo ipcrm –m $s; done

    注:Linux中vi使用Ctrl+s來鎖定linux查看信號量命令,需要使用Ctrl+q來解除鎖定。

    使用編寫的.py腳本如下:

    # -*- : utf-8 -*-

    # the share

    linux查看信號量命令_linux命令 查看系統_查看linux od 命令源代碼

    os

    sys

    def usage():

    print "usage: .py -h -o -s size "

    print " -h show help "

    print " -o the owner share need to "

    print " -s the share size"

    print " the shmid list need to "

    def ():

    = {}

    fp = os.popen('ipcs -m')

    lines = fp.()

    for l in lines:

    if not l.('0x'):

    s = l.split()

    if .(s[2]):

    [s[2]].(s)

    else:

    linux命令 查看系統_查看linux od 命令源代碼_linux查看信號量命令

    [s[2]] = [s]

    #print 'Share map:',

    if == "":

    opts, args = .(sys.argv[1:], "o:hs:")

    # opts is the with

    # args is the no

    owner = None

    size = 0

    for o, p in opts:

    if o == '-h':

    usage()

    sys.exit(0)

    elif o == '-o':

    owner = p

    elif o == '-s':

    size = p

    if not owner:

    val = ("Are you sure to all share ?(yes/no)");

    if (val "yes"):

    查看linux od 命令源代碼_linux命令 查看系統_linux查看信號量命令

    usage()

    sys.exit(0)

    count = 0

    total = 0

    if len(args) > 0:

    for shmid in args:

    cmd = 'ipcrm -m %s' % shmid

    print ' : %s' % cmd

    ret = os.(cmd)

    total += 1

    if ret == 0:

    count += 1

    print ' %s ' % shmid

    else:

    print ' %s ' % shmid

    else:

    = ()

    for o, l in .items():

    if owner and o owner:

    查看linux od 命令源代碼_linux命令 查看系統_linux查看信號量命令

    for p in l:

    total += 1

    if size and size p[4]:

    cmd = 'ipcrm -m %s' % p[1]

    print ' : %s' % cmd

    ret = os.(cmd)

    if ret == 0:

    count += 1

    print ' %s ' % p[1]

    else:

    print ' %s ' % p[1]

    print 'total share = %s' % total

    print ' = %s' % count

    sys.exit(0)

    共享內存大小修改

    使用下面的命令查看共享內存的大小:

    # cat /proc/sys//

    修改共享內存大小:

    臨時修改:在root用戶下執行# echo > /proc/sys//把共享內存大小設置為256MB;

    永久修改:在root用戶下修改/etc/rc.d/rc.local文件,加入下面一行:

    echo > /proc/sys//

    即可每次啟動時把共享內存修改為256MB。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有