青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0

版權(quán)聲明:轉(zhuǎn)載時請以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
http://xufish.blogbus.com/logs/40537374.html

012號與013 號程序,分別是關(guān)于消息隊列和共享內(nèi)存的

/*********************程序相關(guān)信 息*********************
程序編號:012
程序編寫起始日期:2008.11.1
程序編寫完成日期:2008.11.1
程序修改日 期:                                   修改備注:
程序目的:學(xué)習(xí)linux消息隊列通信
所用主要函 數(shù):msgget(),msgsnd(),msgrcv(),msgctl()
程序 存疑:
程序完成地點: 宿舍內(nèi)
*********************程序相關(guān)信息*********************/
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    int pid,msqid;//后者為消息隊列識別代號
    struct msgbuf
    {
        long mtype;//消息類型
        char mtext[20];//消息內(nèi)容
    }send_buf,receive_buf;
    if((msqid=msgget(IPC_PRIVATE,0700))<0)//建立消息隊列
    {
        printf("msgget建立消息隊列失敗。\n");
        exit(1);
    }
    else
        printf("msgget建立消息隊列成功,該消息隊列識別代號為%d。\n",msqid);
    if((pid=fork())<0)
    {
        printf("fork()函數(shù)調(diào)用失敗!\n");
        exit(2);
    }
    else if(pid>0)//父進(jìn)程,發(fā)送消息到消息隊列
    {
        send_buf.mtype=1;
        strcpy(send_buf.mtext,"My test information");
        printf("發(fā)送到消息隊列的信息內(nèi)容為:%s\n",send_buf.mtext);
        if(msgsnd(msqid,&send_buf,20,IPC_NOWAIT)<0)//發(fā)送send_buf中的信息到msqid 對應(yīng)的消息隊列
        {
            printf("msgsnd消息發(fā)送失敗。\n");
            exit(3);
        }
        else
            printf("msgsnd消息發(fā)送成功。\n");
        sleep(2);
        exit(0);
    }
    else//子進(jìn)程,從消息隊列中接收消息]
    {
        sleep(2);//等待父進(jìn)程發(fā)送消息完成
        int infolen;//讀到的信息數(shù)據(jù)長度
        if((infolen=msgrcv(msqid,&receive_buf,20,0,IPC_NOWAIT))<0)//自消息隊列 接收信息
        {
            printf("msgrcv讀取信息錯誤。\n");
            exit(4);
        }
        else
            printf("msgrcv讀取信息成功。\n");
        printf("自消息隊列讀取到的內(nèi)容為%s,共讀取%d個字節(jié)。\n",receive_buf.mtext,infolen);
        if((msgctl(msqid,IPC_RMID,NULL))<0)//刪除msqid對應(yīng)的消息隊列
        {
            printf("msgctl函數(shù)調(diào)用出現(xiàn)錯誤。\n");
            exit(5);
        }
        else
        {
            printf("識別代號為%d的消息隊列已經(jīng)被成功刪除。\n",msqid);
            exit(0);
        }
    }
}
/*********************程序運(yùn)行結(jié) 果*********************
[root@localhost temp]# ./msg
msgget建立消息隊列成功,該消息隊列識別代號為 98304。
發(fā)送到消息隊列的信息內(nèi)容為:My test information
msgsnd消息發(fā)送成功。
msgrcv讀取信息成功。
自消息隊列讀取到的內(nèi)容為My test information,共讀取20個字節(jié)。
識別代號為98304的消息 隊列已經(jīng)被成功刪除。
***********************************************************/

/********************* 程序相關(guān)信息*********************
程序編號:013
程序編寫起始日期:2008.11.1
程序編寫完成日期:2008.11.1
程序修改日 期:                                   修改備注:
程序目的:學(xué)習(xí)linux共享內(nèi)存
所用主要函 數(shù):shmget(),shmat(),shmctl(),shmdt()
程序存 疑:
程序完成地點: 宿舍內(nèi)
*********************程序相關(guān)信息*********************/
#include<sys/ipc.h>
#include<sys/shm.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
int main()
{
    int pid,shmid;//后者為共享內(nèi)存識別代號
    char *write_address;
    char *read_address;
    struct shmid_ds dsbuf;
    if((shmid=shmget(IPC_PRIVATE,32,0))<0)//分配共享內(nèi)存
    {
        printf("shmid共享內(nèi)存分配出現(xiàn)錯誤。\n");
        exit(1);
    }
    else
        printf("shmid共享內(nèi)存分配成功,共享內(nèi)存識別代號為:%d。\n",shmid);
    if((pid=fork())<0)
    {
        printf("fork函數(shù)調(diào)用出現(xiàn)錯誤!\n");
        exit(2);
    }
    else if(pid>0)//父進(jìn)程,向共享內(nèi)存中寫入數(shù)據(jù)
    {
        printf("父進(jìn)程的ID是:%d\n",getpid());
        write_address=(char *)shmat(shmid,NULL,0);//連接共享內(nèi)存
        if((int)write_address==-1)
        {
            printf("shmat連接共享內(nèi)存錯誤。\n");
            exit(3);
        }
        else
        {
            printf("shmat連接共享內(nèi)存成功。\n");
            strcpy(write_address,"我是寫入共享內(nèi)存的測試數(shù)據(jù)");//將數(shù)據(jù)寫入共享內(nèi)存
            printf("寫入共享內(nèi)存的信息為“%s”。\n",write_address);
            if((shmdt((void *)write_address))<0)//斷開與共享內(nèi)存的連接
                printf("shmdt共享內(nèi)存斷開錯誤。\n");
            else
                printf("shmdt共享內(nèi)存斷開成功。\n");
            sleep(2);
            return;
        }
    }
    else//子進(jìn)程,從共享內(nèi)存中讀取數(shù)據(jù)
    {
        sleep(2);//等待父進(jìn)程寫入共享內(nèi)存完畢
        printf("子進(jìn)程ID是:%d\n",getpid());
        if((shmctl(shmid,IPC_STAT,&dsbuf))<0)
        {
            printf("shmctl獲取共享內(nèi)存數(shù)據(jù)結(jié)構(gòu)出現(xiàn)錯誤。\n");
            exit(4);
        }
        else
        {
            printf("shmctl獲取共享內(nèi)存數(shù)據(jù)結(jié)構(gòu)成功。\n建立這個共享內(nèi)存的進(jìn)程ID是:%d\n",dsbuf.shm_cpid);
            printf("該共享內(nèi)存的大小為:%d\n",dsbuf.shm_segsz);
            if((read_address=(char *)shmat(shmid,0,0))<0)//連接共享內(nèi)存
            {
                printf("shmat連接共享內(nèi)存出現(xiàn)錯誤。\n");
                exit(5);
            }
            else
            {
                printf("自共享內(nèi)存中讀取的信息為:“%s”。\n",read_address);
                printf("最后一個操作該共享內(nèi)存的進(jìn)程ID是:%d\n",dsbuf.shm_lpid);
                if((shmdt((void *)read_address))<0)//斷開與共享內(nèi)存的連接
                {
                    printf("shmdt共享內(nèi)存斷開錯誤。\n");
                    exit(6);
                }
                else
                    printf("shmdt共享內(nèi)存斷開成功。\n");
                if(shmctl(shmid,IPC_RMID,NULL)<0)//刪除共享內(nèi)存及其數(shù)據(jù)結(jié)構(gòu)
                {
                    printf("shmctl刪除共享內(nèi)存及其數(shù)據(jù)結(jié)構(gòu)出現(xiàn)錯誤。\n");
                    exit(7);
                }
                else
                    printf("shmctl刪除共享內(nèi)存及其數(shù)據(jù)結(jié)構(gòu)成功。\n");
                exit(0);
            }
        }    
    }
}
/*********************程序運(yùn)行結(jié) 果*********************
[root@localhost temp]# ./shm
shmid共享內(nèi)存分配成功,共享內(nèi)存識別代號 為:1703947。
父進(jìn)程的ID是:7647
shmat連接共享內(nèi)存成功。
寫入共享內(nèi)存的信息為“我是寫入共享內(nèi)存的測試數(shù)據(jù)”。
shmdt 共享內(nèi)存斷開成功。
子進(jìn)程ID是:7648
shmctl獲取共享內(nèi)存數(shù)據(jù)結(jié)構(gòu)成功。
建立這個共享內(nèi)存的進(jìn)程ID是:7647
該共享內(nèi)存的大小 為:32
自共享內(nèi)存中讀取的信息為:“我是寫入共享內(nèi)存的測試數(shù)據(jù)”。
最后一個操作該共享內(nèi)存的進(jìn)程ID是:7647
shmdt共享內(nèi)存斷開成功。
shmctl刪除共享內(nèi)存及其數(shù)據(jù)結(jié)構(gòu)成功。
***********************************************************/

posted on 2010-07-14 10:43 chatler 閱讀(2072) 評論(1)  編輯 收藏 引用 所屬分類: Linux_Coding

FeedBack:
# re: linux的消息隊列與共享內(nèi)存編程
2011-05-27 11:01 | 朱志超
內(nèi)容選擇得很好,謝謝  回復(fù)  更多評論
  
<2009年12月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關(guān),覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩一级不卡| 欧美另类久久久品| 国产精品久久久久影院亚瑟| 在线亚洲免费视频| 亚洲线精品一区二区三区八戒| 欧美日精品一区视频| 亚洲欧美日韩国产成人| 亚洲欧美中日韩| 黄色亚洲网站| 亚洲国产精品一区二区久| 麻豆精品在线播放| 中国成人亚色综合网站| 亚洲自拍偷拍麻豆| 精品动漫3d一区二区三区| 亚洲大胆美女视频| 欧美午夜在线视频| 久久影视三级福利片| 欧美大片免费| 欧美一区在线看| 免费毛片一区二区三区久久久| 在线亚洲+欧美+日本专区| 香蕉久久夜色| 亚洲免费观看在线视频| 亚洲一区欧美激情| 亚洲精品国产无天堂网2021| 亚洲综合精品四区| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲日韩欧美视频| 国产区在线观看成人精品| 亚洲国内自拍| 经典三级久久| 亚洲一区二区三区中文字幕| 亚洲电影在线看| 亚洲欧美日韩一区在线| 99re66热这里只有精品4| 性做久久久久久免费观看欧美| 亚洲狼人综合| 久久精品亚洲热| 羞羞答答国产精品www一本| 欧美大色视频| 欧美大片国产精品| 国产一二三精品| 一本久道久久久| 日韩视频在线一区| 狂野欧美激情性xxxx欧美| 久久精品视频在线看| 亚洲福利小视频| 亚洲一区免费视频| 亚洲精品一区久久久久久| 欧美有码视频| 午夜精品久久久| 欧美性猛交一区二区三区精品| 亚洲激情电影在线| 亚洲国产导航| 裸体一区二区| 欧美大片免费观看| 亚洲国产福利在线| 久久久久久9| 久久综合色天天久久综合图片| 国产精品一区一区| 亚洲欧美制服另类日韩| 午夜亚洲性色视频| 国产精品久久午夜夜伦鲁鲁| 亚洲无亚洲人成网站77777| 在线亚洲一区二区| 欧美三级视频在线播放| 一本色道久久88综合日韩精品| 亚洲免费观看高清在线观看 | 午夜天堂精品久久久久| 国产精品九色蝌蚪自拍| 在线亚洲激情| 羞羞色国产精品| 国产片一区二区| 久久国产精品久久久久久久久久| 久久精品亚洲乱码伦伦中文 | 一区二区在线视频| 久久午夜影视| 亚洲精品国产精品乱码不99按摩| 99亚洲一区二区| 欧美偷拍一区二区| 亚洲综合色自拍一区| 久久精品国产第一区二区三区最新章节| 国产女精品视频网站免费| 香蕉av777xxx色综合一区| 老鸭窝亚洲一区二区三区| 亚洲经典一区| 欧美视频精品在线| 欧美一区2区三区4区公司二百| 久久夜色精品国产欧美乱极品| 1024日韩| 欧美四级剧情无删版影片| 亚洲欧美视频在线观看视频| 模特精品在线| 亚洲网站在线| 精品999久久久| 欧美日韩精品系列| 午夜一区不卡| 亚洲人成网站999久久久综合| 亚洲综合导航| 亚洲电影免费观看高清完整版在线观看| 欧美高清你懂得| 亚洲专区在线视频| 亚洲国产精品美女| 久久精品在这里| 一本色道久久综合狠狠躁篇怎么玩| 国产精品亚洲第一区在线暖暖韩国| 久久久高清一区二区三区| 日韩视频免费观看高清在线视频| 久久国产精品亚洲77777| 亚洲免费电影在线观看| 国产综合在线视频| 欧美视频一区在线观看| 久久一区二区精品| 玖玖玖免费嫩草在线影院一区| 国产农村妇女毛片精品久久莱园子| 亚洲高清资源| 久久久精品2019中文字幕神马| 亚洲精品一区二| 红桃视频国产精品| 国产精品视频免费观看www| 欧美高清影院| 久久网站免费| 欧美中文在线视频| 亚洲一区国产精品| 日韩一二三在线视频播| 欧美激情片在线观看| 久久一区二区三区av| 欧美在线日韩| 亚洲欧美另类在线| 99热这里只有精品8| 亚洲成人资源网| 精品电影在线观看| 黑丝一区二区三区| 国产午夜精品麻豆| 国产精品入口| 国产精品蜜臀在线观看| 国产精品狠色婷| 欧美午夜一区二区三区免费大片| 欧美日韩国产综合一区二区| 欧美大片免费观看| 欧美粗暴jizz性欧美20| 欧美福利专区| 欧美日韩另类视频| 欧美日韩免费区域视频在线观看| 欧美欧美在线| 欧美日韩亚洲一区二区| 欧美日韩一区二区三区在线视频| 欧美日韩福利| 国产精品成人va在线观看| 国产精品久久久久77777| 国产精品久久999| 国产欧美在线看| 韩国精品在线观看| 在线看日韩av| 日韩写真在线| 亚洲无吗在线| 久久精品人人做人人综合| 久久久久国产精品厨房| 免费视频一区| 亚洲欧洲日产国码二区| 在线亚洲一区观看| 香蕉尹人综合在线观看| 久久综合伊人| 欧美日韩综合久久| 国产欧美一区二区三区另类精品| 激情亚洲成人| 亚洲美女黄网| 新狼窝色av性久久久久久| 久久男人av资源网站| 亚洲高清激情| 亚洲免费在线精品一区| 久久躁日日躁aaaaxxxx| 欧美日韩精品一二三区| 国产一区二区精品久久| 日韩视频免费观看高清在线视频| 亚洲一区二区三区午夜| 久久看片网站| 日韩亚洲欧美在线观看| 欧美在线免费视频| 欧美欧美在线| 国内精品美女在线观看| 一区二区三区日韩精品| 久久精品一二三区| 亚洲精品久久久久| 久久精品国产欧美激情 | 亚洲巨乳在线| 久久激情一区| 国产精品大全| 99re热精品| 久久综合五月| 亚洲一区二区成人| 欧美激情国产日韩精品一区18| 国产日韩精品入口| 一区二区动漫| 欧美国产一区二区三区激情无套| 欧美吻胸吃奶大尺度电影| 国产亚洲欧美一区| 中国成人在线视频| 亚洲第一福利在线观看| 欧美一区二区视频免费观看 |