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

posts - 297,  comments - 15,  trackbacks - 0

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

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

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

/********************* 程序相關(guān)信息*********************
程序編號:013
程序編寫起始日期:2008.11.1
程序編寫完成日期:2008.11.1
程序修改日 期:                                   修改備注:
程序目的:學(xué)習(xí)linux共享內(nèi)存
所用主要函 數(shù):shmget(),shmat(),shmctl(),shmdt()
程序存 疑:
程序完成地點(diǎn): 宿舍內(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)錯(cuò)誤。\n");
        exit(1);
    }
    else
        printf("shmid共享內(nèi)存分配成功,共享內(nèi)存識別代號為:%d。\n",shmid);
    if((pid=fork())<0)
    {
        printf("fork函數(shù)調(diào)用出現(xiàn)錯(cuò)誤!\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)存錯(cuò)誤。\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)存斷開錯(cuò)誤。\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)錯(cuò)誤。\n");
            exit(4);
        }
        else
        {
            printf("shmctl獲取共享內(nèi)存數(shù)據(jù)結(jié)構(gòu)成功。\n建立這個(gè)共享內(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)錯(cuò)誤。\n");
                exit(5);
            }
            else
            {
                printf("自共享內(nèi)存中讀取的信息為:“%s”。\n",read_address);
                printf("最后一個(gè)操作該共享內(nèi)存的進(jìn)程ID是:%d\n",dsbuf.shm_lpid);
                if((shmdt((void *)read_address))<0)//斷開與共享內(nèi)存的連接
                {
                    printf("shmdt共享內(nèi)存斷開錯(cuò)誤。\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)錯(cuò)誤。\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)成功。
建立這個(gè)共享內(nèi)存的進(jìn)程ID是:7647
該共享內(nèi)存的大小 為:32
自共享內(nèi)存中讀取的信息為:“我是寫入共享內(nèi)存的測試數(shù)據(jù)”。
最后一個(gè)操作該共享內(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 閱讀(2078) 評論(1)  編輯 收藏 引用 所屬分類: Linux_Coding

FeedBack:
# re: linux的消息隊(duì)列與共享內(nèi)存編程
2011-05-27 11:01 | 朱志超
內(nèi)容選擇得很好,謝謝  回復(fù)  更多評論
  
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個(gè)博客還是不錯(cuò),雖然做的東西和我不大相關(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>
            国产精品亚洲综合天堂夜夜| 国产婷婷色一区二区三区四区 | 最新精品在线| 牛牛国产精品| 欧美国产一区二区在线观看| 欧美黄在线观看| 亚洲国产天堂久久综合| 亚洲国产精品一区在线观看不卡| 亚洲第一在线视频| 亚洲黄色免费电影| 99成人在线| 亚洲欧美日韩精品久久| 亚洲欧美日韩国产综合精品二区| 欧美一区二区三区免费视| 久久久国产精品一区二区中文 | 亚洲欧美国产一区二区三区| 亚洲综合不卡| 久久精品国产一区二区三| 老妇喷水一区二区三区| 欧美电影免费观看高清完整版| 欧美日韩八区| 国产酒店精品激情| 激情成人综合网| 日韩香蕉视频| 午夜久久资源| 欧美ed2k| 中文亚洲欧美| 久久精品国产亚洲a| 欧美大色视频| 国产精品视频大全| 亚洲盗摄视频| 亚洲天堂网在线观看| 久久久.com| 亚洲国产一区二区视频| 亚洲一区二区在线播放| 美女诱惑一区| 国产精品卡一卡二卡三| 1769国产精品| 亚洲男人第一av网站| 裸体丰满少妇做受久久99精品| 91久久夜色精品国产九色| 亚洲欧美成人| 欧美不卡高清| 国产一区二区丝袜高跟鞋图片| 亚洲第一区在线观看| 亚洲欧美日本另类| 欧美成人第一页| 亚洲欧美国产精品va在线观看 | 国产精品免费在线| 亚洲电影欧美电影有声小说| 亚洲视频在线观看| 欧美a级片网| 午夜精品久久久久久久99水蜜桃 | 欧美激情一二三区| 国产午夜精品美女毛片视频| 日韩午夜在线电影| 老色批av在线精品| 亚洲桃色在线一区| 欧美激情一二三区| 在线观看视频免费一区二区三区| 亚洲午夜小视频| 亚洲电影自拍| 欧美在线影院| 国产精品日韩一区二区三区| 亚洲久久视频| 美女视频一区免费观看| 亚洲小视频在线观看| 欧美寡妇偷汉性猛交| 国产在线国偷精品产拍免费yy| 亚洲夜晚福利在线观看| 亚洲第一天堂av| 久久久久久久999| 国产无一区二区| 亚洲欧美日韩爽爽影院| 亚洲精品免费在线观看| 噜噜噜91成人网| 精品99一区二区三区| 欧美在线免费视频| 中文一区字幕| 欧美日韩亚洲三区| 99精品国产在热久久婷婷| 欧美搞黄网站| 久久亚洲精选| 在线日韩欧美| 美女图片一区二区| 久久精品道一区二区三区| 国产九色精品成人porny| 午夜激情一区| 亚洲一区二区免费| 国产精品免费看片| 欧美一区二区三区免费观看视频| 夜夜夜久久久| 国产精品嫩草久久久久| 亚洲在线视频免费观看| 99精品国产高清一区二区| 欧美日产一区二区三区在线观看 | 亚洲国产视频a| 欧美肥婆在线| 日韩网站在线观看| 亚洲精选在线观看| 欧美日韩亚洲91| 亚洲自拍偷拍福利| 亚洲制服欧美中文字幕中文字幕| 国产精品毛片在线| 久久国产精品色婷婷| 欧美一区影院| 一区二区三区在线观看国产| 免费中文字幕日韩欧美| 免费久久99精品国产自| 亚洲精品一区在线观看| 99视频一区| 国产精品一区二区久久精品| 久久久久成人精品免费播放动漫| 久久激情网站| 亚洲国产一区在线| 91久久久在线| 国产精品卡一卡二| 久久精品视频免费观看| 久久亚洲精品中文字幕冲田杏梨| 亚洲精品日产精品乱码不卡| 亚洲毛片网站| 国产麻豆精品视频| 蜜桃久久av| 欧美美女视频| 久久se精品一区精品二区| 久久久成人网| av成人免费| 午夜精品久久久久| 亚洲黄色有码视频| av成人免费| 国内精品久久久久久| 亚洲国产影院| 国产精品一香蕉国产线看观看 | 一区二区高清在线观看| 国产欧亚日韩视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美激情视频一区二区三区不卡| 亚洲制服av| 久久一区激情| 亚洲自拍偷拍一区| 久久精品亚洲国产奇米99| 一区二区三区高清在线 | 亚洲卡通欧美制服中文| 国产精品中文在线| 欧美激情精品久久久久| 国产精品乱子久久久久| 欧美aaa级| 国产精品视频免费观看| 亚洲福利在线视频| 国产精品尤物| 亚洲靠逼com| 精品成人在线观看| 一区二区三区成人| 亚洲国产精品成人综合色在线婷婷| 夜夜爽www精品| 亚洲欧洲在线一区| 午夜国产不卡在线观看视频| 亚洲九九精品| 久久精品视频播放| 亚洲一区二区三区影院| 久久综合久久综合久久综合| 香港成人在线视频| 欧美精品尤物在线| 老巨人导航500精品| 国产精品一区二区欧美| 亚洲人成在线影院| 亚洲电影免费在线| 欧美一级大片在线观看| 亚洲一区黄色| 欧美成人免费网站| 蜜臀av在线播放一区二区三区| 国产精品久久999| 亚洲精品免费一二三区| 亚洲国产精品成人综合色在线婷婷 | 亚洲激情小视频| 一区二区亚洲精品国产| 亚洲欧美日本另类| 亚洲一级一区| 欧美日产在线观看| 亚洲国产经典视频| 亚洲第一精品福利| 久久精品毛片| 久久久久久久久久久成人| 国产精品女主播一区二区三区| 亚洲精品欧美在线| 亚洲精品免费看| 免费的成人av| 欧美成人69av| 尤物yw午夜国产精品视频| 欧美在线不卡| 久久久久九九九| 国产亚洲一区二区精品| 亚洲欧美日韩一区在线观看| 午夜精品影院| 国产美女一区| 午夜激情综合网| 久久精品在线| 韩国视频理论视频久久| 久久激情视频久久| 蜜臀久久99精品久久久久久9|