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

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>
            国产精品白丝黑袜喷水久久久| 一本色道久久综合精品竹菊 | 国产精品欧美久久| 欧美成人有码| 欧美日韩中文字幕| 国产精品免费一区豆花| 国产精品毛片va一区二区三区| 国产精品乱码| 精品成人国产在线观看男人呻吟| 国外视频精品毛片| 亚洲三级色网| 亚洲欧美在线磁力| 久久艳片www.17c.com| 亚洲国产精品久久久久婷婷884| 六十路精品视频| 亚洲精品一区中文| 新67194成人永久网站| 欧美阿v一级看视频| 国产精品久久久久久久一区探花| 韩日欧美一区| 亚洲一区二区伦理| 牛人盗摄一区二区三区视频| 亚洲精品综合在线| 欧美一区2区三区4区公司二百| 久久亚洲综合色一区二区三区| 欧美日韩的一区二区| 国产一区美女| 亚洲午夜在线观看| 欧美成人激情在线| 午夜精品成人在线| 欧美色精品在线视频| 在线不卡欧美| 亚洲少妇自拍| 欧美激情第三页| 欧美亚洲在线| 国产精品黄视频| 亚洲欧洲在线视频| 久久亚洲不卡| 国产嫩草影院久久久久| 欧美一区二区视频97| 欧美黄色影院| 激情成人综合| 欧美一级大片在线观看| 亚洲精品国产无天堂网2021| 久久精视频免费在线久久完整在线看| 欧美日韩中文在线观看| 99日韩精品| 亚洲国产精品一区二区三区| 久久成人在线| 国产亚洲一区二区三区在线观看| 亚洲天堂网在线观看| 亚洲精品免费电影| 欧美激情91| 亚洲精品久久视频| 欧美ab在线视频| 久久视频在线免费观看| 国内揄拍国内精品少妇国语| 久久精品国产精品亚洲综合| 亚洲综合大片69999| 国产精品入口福利| 欧美在线啊v| 欧美一区2区三区4区公司二百| 国产日韩精品入口| 久久久久久亚洲精品杨幂换脸| 欧美在线视频观看免费网站| 国产资源精品在线观看| 久久免费偷拍视频| 久久青青草综合| 亚洲精品国久久99热| 欧美国产三区| 欧美女人交a| 亚洲免费人成在线视频观看| 一区二区三区日韩精品视频| 国产精品久久久久久久久果冻传媒 | 亚洲免费电影在线观看| 亚洲精品一区在线观看| 国产精品伦子伦免费视频| 香蕉久久国产| 欧美专区第一页| 亚洲国产一区视频| 99视频有精品| 国产综合在线视频| 亚洲国产精品一区制服丝袜| 欧美日韩在线播放三区| 欧美亚洲视频在线看网址| 久久精品免费看| 亚洲精品综合在线| 亚洲影院在线观看| 亚洲福利在线视频| 亚洲天堂av综合网| 一区免费观看| 日韩一二在线观看| 狠狠干成人综合网| 日韩视频国产视频| 午夜在线视频观看日韩17c| 亚洲免费小视频| 影音先锋亚洲一区| 亚洲精品中文字幕在线| 国产视频久久久久久久| 欧美激情中文字幕乱码免费| 国产精品久久久久久久久久免费看| 久久久亚洲一区| 欧美三级不卡| 欧美黄色大片网站| 国产日韩精品一区二区| 91久久夜色精品国产网站| 国产伦精品一区二区三区免费迷| 欧美成人在线网站| 国产婷婷成人久久av免费高清| 欧美激情精品久久久久| 国产伦理一区| aa国产精品| 亚洲精品一区二区网址| 欧美专区亚洲专区| 欧美怡红院视频| 欧美手机在线视频| 亚洲精品一区二区三区不| 亚洲大胆在线| 欧美怡红院视频| 亚洲欧美国产三级| 国产精品va在线| 亚洲精品色图| 日韩视频二区| 欧美777四色影视在线| 久久综合国产精品| 国产亚洲一区二区在线观看 | 久久精品一区二区| 欧美中日韩免费视频| 欧美三级中文字幕在线观看| 亚洲国产另类久久久精品极度| 一色屋精品亚洲香蕉网站| 欧美一级理论性理论a| 欧美一区影院| 国产亚洲综合精品| 欧美中文在线视频| 欧美主播一区二区三区美女 久久精品人 | 99国产精品久久久久久久久久| 久久午夜激情| 欧美成人免费全部| 亚洲国内精品在线| 欧美大尺度在线| 亚洲人成在线观看一区二区| 亚洲精品激情| 欧美久久电影| 一本色道久久综合狠狠躁篇怎么玩| 亚洲午夜久久久| 国产精品日本| 久久精品一区中文字幕| 免费不卡中文字幕视频| 亚洲国产精品电影在线观看| 美女图片一区二区| 亚洲欧洲综合| 午夜亚洲伦理| 黄色成人免费观看| 欧美91视频| 午夜欧美大尺度福利影院在线看| 亚洲国产精品va在线看黑人动漫| 亚洲电影av在线| 欧美日韩不卡| 亚洲淫性视频| 狼人社综合社区| 99在线精品免费视频九九视| 欧美三区在线| 久久精品午夜| 亚洲日本成人在线观看| 亚洲欧美另类在线观看| 国产一区二区无遮挡| 欧美成人激情在线| 亚洲一区二区三区在线| 麻豆91精品91久久久的内涵| 99热免费精品在线观看| 国产情人节一区| 欧美成年人网| 午夜激情一区| 亚洲精品孕妇| 免费观看国产成人| 亚洲午夜高清视频| 在线欧美电影| 国产欧美视频一区二区| 欧美激情在线免费观看| 性亚洲最疯狂xxxx高清| 亚洲人体1000| 久久频这里精品99香蕉| 一区二区三区导航| 亚洲第一在线综合网站| 国产乱码精品一区二区三区av| 欧美α欧美αv大片| 欧美中文字幕第一页| 在线中文字幕一区| 亚洲国产欧美精品| 久久这里有精品视频| 亚洲欧美激情一区| av不卡在线| 亚洲国产精品免费| 国产亚洲精品久| 国产精品一区免费在线观看| 欧美巨乳在线观看| 免费成人美女女| 久久久久亚洲综合| 久久aⅴ国产欧美74aaa|