亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 多進程編程的相關知識總結(一).txt

?? 本資源中含有有關LINUX進程通信的一些文章
?? TXT
?? 第 1 頁 / 共 5 頁
字號:

             前所述,包括消息類型和消息正文.msgsz為可接收的消息正文的 
             字節數.若接收到的消息正文的長度大于msgsz,則會被截短到 
             msgsz字節為止(當消息標志msgflg&MSG_NOERROR為真時),截掉的 

             部份將被丟失,而且不通知消息發送進程. 
             msgtyp指定消息類型: 
             . 為0則接收消息隊列中第一個消息. 
             . 大于0則接收消息隊列中第一個類型為msgtyp的消息. 
             . 小于0則接收消息隊列中第一個類型值不小于msgtyp絕對值且 
               類型值又最小的消息. 
             msgflg指定操作行為: 
             . 若(msgflg&IPC_NOWAIT)是真的,調用進程會立即返回,若沒有 
               接收到消息則返回值為-1,errno設置為ENOMSG. 
             . 若(msgflg&IPC_NOWAIT)不是真的,則調用進程會被掛起直到下 

               面情況之一發生: 
                 * 隊列中的消息的類型是有效的. 
                 * 消息隊列標志被系統刪除.系統調用返回-1. 
                 * 調用進程接收到一個未被忽略的中斷信號,調用進程繼續 
                   執行或被終止. 
             調用成功后,對應指定的消息隊列的相關結構做如下動作: 
             . 消息數(msg_qnum)減1. 
             . 消息隊列最近接收進程號(msg_lrpid)改為調用進程號. 
             . 消息隊列接收時間(msg_rtime)改為當前系統時間. 
             以上信息可用命令ipcs -a看到. 
        返回值:調用成功則返回值等于接收到實際消息正文的字節數. 
             不成功則返回-1.
    15.msgctl() 
        功能:消息控制操作 
        語法:#include <sys/types.h> 
             #include <sys/ipc.h> 
             #include <sys/msg.h> 
             int msgctl(msqid,cmd,buf) 
             int msqid,cmd; 
             struct msqid_ds *buf; 
        說明:本系統調用提供一系列消息控制操作,操作動作由cmd定義,以下 
             cmd定義值表明了各操作動作的定義. 
             . IPC_STAT:將msqid相關的數據結構中各個元素的當前值放入由 

                 buf指向的結構中. 
             . IPC_SET:將msqid相關的數據結構中的下列元素設置為由buf指 

                 向的結構中的對應值. 
                 msg_perm.uid 
                 msg_perm.gid 
                 msg_perm.mode 
                 msg_qbytes 
                 本命令只能由有效UID等于msg_perm.cuid或msg_perm.uid的 

                 進程或有效UID有合適權限的進程操作.只有具有合適權限的 

                 用戶才能增加msg_qbytes的值. 
             . IPC_RMID:刪除由msqid指示的消息隊列.將它從系統中刪除并 
                 破壞相關的數據結構. 
                 本命令只能由有效UID等于msg_perm.cuid或msg_perm.uid的 

                 進程或有效UID有合適權限的進程操作. 
        返回值:調用成功則返回值為0,否則為-1. 
    16.msgget() 
        功能:取得一個消息隊列. 
        語法:#include <sys/types.h> 
             #include <sys/ipc.h> 
             #include <sys/msg.h> 
             int msgget(key,msgflg) 
             key_t key; 
             int msgflg; 
        說明:本系統調用返回與參數key相關的消息隊列的標識符. 
             若以下事實成立,則與消息隊列相關的標識符和數據結構將被創 
             建出來:
             . 若參數key等于IPC_PRIVATE. 
             . 若參數key沒有一個已存在的消息隊列標識符與之相關,同時值 

               (msgflg&IPC_CREAT)為真. 
             創建消息隊列時,與新的消息隊列標識符相關的數據結構將被初 
             始化為如下: 
             . msg_perm.cuid和msg_perm.uid設置為調用進程的有效UID. 
             . msg_perm.cgid和msg_perm.gid設置為調用進程的有效GID. 
             . msg_perm.mode訪問權限比特位設置為msgflg訪問權限比特位. 

             . msg_qnum,msg_lspid,msg_lrpid,msg_stime,msg_rtime設置為0
. 
             . msg_ctime設置為當前系統時間. 
             . msg_qbytes設置為系統允許的最大值. 
        返回值:調用成功則返回一非0值,稱為消息隊列標識符;否則返回值為-1
. 
        例子:本例將包括上述所有消息隊列操作的系統調用: 
             #define RKEY 0x9001L    /*讀消息隊列的KEY值*/ 
             #define WKEY 0x9002L    /*寫消息隊列的KEY值*/ 
             #define MSGFLG 0666     /*消息隊列訪問權限*/ 
             #define IPC_WAIT 0      /*等待方式在include文件中未定義*/

             int rmsqid;             /*讀消息隊列標識符*/ 
             int wmsqid;             /*寫消息隊列標識符*/ 
             struct msgbuf { 
                 long mtype; 
                 char mtext[200]; 
             } buf; 
             /*若讀消息隊列已存在就取得標識符,否則則創建并取得標識符*/

             if ((rmsqid=msgget(RKEY,MSGFLG|IPC_CREAT))<0) { 
printf("get read message queue failed\n"); 
exit(1); 
} 
/*若寫消息隊列已存在則失敗,若不存在則創建并取得標識符*/ 
if ((wmsqid=msgget(WKEY, 
MSGFLG|IPC_CREAT|IPC_TRUNC))<0) { 
printf("get write message queue failed\n"); 
exit(2); 
} 
/*接收所有類型的消息*/ 
if (msgrcv(rmsqid,&buf,sizeof(struct msgbuf)-sizeof(long)
, 
0L,IPC_WAIT)>0) 
                 printf("get %ld type message from queue:%s\n", 
                        buf.mtype,buf.mtext); 
             else { 
                 printf("get message failed\n");
                 exit(3); 
             } 
             buf.mtype=3L 
             if (msgsnd(wmsqid,&buf,sizeof(struct msgbuf)-sizeof(long)
, 
                  IPC_NOWAIT)>0) 
                 printf("send message OK\n"); 
             else { 
                 printf("send message failed\n"); 
                 exit(4); 
             } 
             msgctl(wmsqid,IPC_RMID,(struct msqid *)NULL); 
    17.shmat() 
        功能:聯接共享內存的操作. 
        語法:#include <sys/types.h> 
             #include <sys/ipc.h> 
             #include <sys/shm.h> 
             void *shmat(shmid,shmaddr,shmflg) 
             int shmid; 
             void *shmaddr; 
             int shmid; 
        說明:將由shmid指示的共享內存聯接到調用進程的數據段中.被聯接的 

             段放在地址,該地址由以下準則指定: 
             . 若shmaddr等于(void *)0,則段聯接到由系統選擇的第一個可 
               用的地址上. 
             . 若shmaddr不等于(void *)0同時(shmflg&SHM_RND)值為真,則 
               段聯接到由(shmaddr-(shmaddr%SHMLBA))給出的地址上. 
             . 若shmaddr不等于(void *)0同時(shmflg&SHM_RND)值為假,則 
               段聯接到由shmaddr指定的地址上. 
             若(shmflg&sSHM_RDONLY)為真并且調用進程有讀允許,則被聯接 
             的段為只讀;否則,若值不為真且調用進程有讀寫權限,則被聯接 
             的段為可讀寫的. 
        返回值:若調用成功則返回被聯接的共享內存段在數據段上的啟始地址.

             否則返回值為-1. 
    18.shmdt() 
        功能:斷開共享內存聯接的操作. 
        語法:#include <sys/types.h> 
             #include <sys/ipc.h>
             #include <sys/shm.h> 
             void *shmdt(shmaddr) 
             void *shmaddr; 
        說明:本系統調用將由shmaddr指定的共享內存段從調用進程的數據段 
             脫離出去. 
        返回值:若調用成功則返回值為0,否則返回值為-1. 
    19.shmget() 
        功能:取得共享內存段 
        語法:#include <sys/types.h> 
             #include <sys/ipc.h> 
             #include <sys/shm.h> 
             int shmget(key,size,shmflg) 
             key_t key; 
             int size,shmflg; 
        說明:本系統調用返回key相關的共享內存標識符. 
             共享內存標識符和相關數據結構及至少size字節的共享內存段能 

             正常創建,要求以下事實成立: 
             . 參數key等于IPC_PRIVATE. 
             . 參數key沒有相關的共享內存標識符,同時(shmflg&IPC_CREAT) 

               值為真. 
             共享內存創建時,新生成的共享內存標識相關的數據結構被初始 
             化如下: 
             . shm_perm.cuid和shm_perm.uid設置為調用進程的有效UID. 
             . shm_perm.cgid和shm_perm.gid設置為調用進程的有效GID. 
             . shm_perm.mode訪問權限比特位設置為shmflg訪問權限比特位. 

             . shm_lpid,shm_nattch,shm_atime,shm_dtime設置為0. 
             . shm_ctime設置為當前系統時間. 
             . shm_segsz設置為0. 
        返回值:若調用成功則返回一個非0值,稱為共享內存標識符,否則返回 
             值為-1. 
    20.shmctl() 
        功能:共享內存控制操作. 
        語法:#include <sys/types.h> 
             #include <sys/ipc.h> 
             #include <sys/shm.h> 
             int shmctl(shmid,cmd,buf) 
             int shmid,cmd; 
             struct shmid_ds *buf; 
        說明:本系統調用提供一系列共享內存控制操作.操作行為由cmd指定. 
             以下為cmd的有效值:
             . IPC_STAT:將shmid相關的數據結構中各個元素的當前值放入由 

                 buf指向的結構中. 
             . IPC_SET:將shmid相關的數據結構中的下列元素設置為由buf指 

                 向的結構中的對應值. 
                 shm_perm.uid 
                 shm_perm.gid 
                 shm_perm.mode 
                 本命令只能由有效UID等于shm_perm.cuid或shm_perm.uid的 

                 進程或有效UID有合適權限的進程操作. 
             . IPC_RMID:刪除由shmid指示的共享內存.將它從系統中刪除并 
                 破壞相關的數據結構. 
                 本命令只能由有效UID等于shm_perm.cuid或shm_perm.uid的 

                 進程或有效UID有合適權限的進程操作. 
        返回值:若調用成功則返回0,否則返回-1. 
        例子:本例包括上述所有共享內存操作系統調用: 
             #include <sys/types.h> 
             #include <sys/ipc.h> 
             #include <sys/shm.h> 
             #define SHMKEY 74 
             #define K 1024 
             int shmid; 
             cleanup() 
             { 
                 shmctl(shmid,IPC_RMID,0); 
                 exit(0); 
             } 
             main() 
             { 
                 int *pint; 
                 char *addr1,*addr2; 
                 extern char *shmat(); 
                 extern cleanup(); 
                 for (i=0;i<20;i++) 
signal(i,cleanup); 
shmid=shmget(SHMKEY,128*K,0777|IPC_CREAT); 
addr1=shmat(shmid,0,0); 
addr2=shmat(shmid,0,0); 
printf("addr1 0x%x addr2 0x%x\n",addr1,addr2);
pint=(int*)addr1; 
for (i=0;i<256;i++) 
*pint++=i; 
pint=(int*)addr1; 
*pint=256; 
pint=(int*)addr2; 
for (i=0;i<256;i++) 
printf("index %d\tvalue%d\n",i,*pint++); 
shmdt(addr1); 
shmdt(addr2); 
pause(); 
} 
21.semctl() 
功能:信號量控制操作. 
語法:#include <sys/types.h> 
             #include <sys/ipc.h> 
             #include <sys/sem.h> 
             int semctl(semid,memnum,cmd,arg) 
             int semid,semnum,cmd; 
             union semun { 
                   int val; 
                   struct semid_ds *buf; 
                   ushort *array; 
             }arg; 
        說明:本系統調用提供了一個信號量控制操作,操作行為由cmd定義,這 
             些命令是對由semid和semnum指定的信號量做操作的.每個命令都 

             要求有相應的權限級別: 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区四区| 色综合天天视频在线观看 | 欧美高清视频不卡网| 在线观看日韩国产| 在线视频国内自拍亚洲视频| 91麻豆.com| 欧美日韩色一区| 日韩欧美一级在线播放| 欧美一级二级三级乱码| 日韩精品中文字幕一区| 久久久精品tv| 亚洲嫩草精品久久| 人人爽香蕉精品| 国产激情一区二区三区| 99久久精品国产导航| 欧美丝袜丝nylons| 精品成人在线观看| 欧美国产成人精品| 亚洲一卡二卡三卡四卡五卡| 五月天激情综合| 国产一区二区精品久久91| 欧美日产在线观看| 精品毛片乱码1区2区3区 | 亚洲人成在线播放网站岛国| 一区二区在线观看不卡| 日本女优在线视频一区二区| 国产在线一区二区综合免费视频| 国产成人免费在线观看| 欧洲精品在线观看| 精品成人在线观看| 一区二区三区精品在线观看| 青青草国产成人av片免费| 国产成人精品亚洲777人妖| 成人不卡免费av| 欧美一区二区三区婷婷月色| 久久精品视频在线看| 亚洲一区成人在线| 成人免费观看视频| 日韩午夜激情电影| 一区二区激情视频| 国产激情一区二区三区四区| 精品视频一区二区不卡| 欧美高清在线一区| 秋霞av亚洲一区二区三| 91在线视频免费91| 久久综合中文字幕| 视频在线观看一区二区三区| 99麻豆久久久国产精品免费| 91麻豆精品国产| 亚洲一区二区三区小说| 福利91精品一区二区三区| 91精品在线观看入口| 亚洲男人天堂一区| 成人18视频在线播放| 精品捆绑美女sm三区| 亚洲国产精品天堂| 欧美在线观看禁18| 亚洲欧美中日韩| 国产不卡在线播放| 国产亚洲一本大道中文在线| 欧美a一区二区| 欧美另类变人与禽xxxxx| 亚洲老司机在线| 91亚洲男人天堂| 国产精品乱码一区二三区小蝌蚪| 经典一区二区三区| 精品国产乱码久久久久久图片| 偷拍自拍另类欧美| 制服视频三区第一页精品| 亚洲五月六月丁香激情| 色天使色偷偷av一区二区| 自拍偷拍亚洲欧美日韩| 99久精品国产| 亚洲激情图片小说视频| 欧美亚洲自拍偷拍| 视频一区欧美精品| 欧美一级夜夜爽| 麻豆久久久久久| 午夜欧美电影在线观看| 欧美日韩一区在线观看| 午夜精品久久久久久久蜜桃app| 欧美午夜影院一区| 午夜精品视频一区| 亚洲精品一区二区三区影院 | 亚洲精品美腿丝袜| 在线精品亚洲一区二区不卡| 亚洲综合在线电影| 日韩一区二区三| 国产精一品亚洲二区在线视频| 亚洲精品在线一区二区| 国产成人免费高清| 亚洲精品福利视频网站| 91.xcao| 国产盗摄一区二区| 亚洲人被黑人高潮完整版| 欧美精品一卡二卡| 国产91高潮流白浆在线麻豆| 亚洲欧洲成人av每日更新| 欧美丝袜第三区| 国产伦精品一区二区三区在线观看| 国产夜色精品一区二区av| 91丨九色porny丨蝌蚪| 日韩福利视频网| 国产精品色哟哟| 欧美喷水一区二区| 风间由美性色一区二区三区| 亚洲一区精品在线| 久久久久国产免费免费| 91福利在线看| 风间由美中文字幕在线看视频国产欧美| 亚洲九九爱视频| 久久综合久久综合久久| 色综合中文综合网| 国产毛片一区二区| 国产精品久久久久久亚洲伦| 欧美喷潮久久久xxxxx| 成人动漫一区二区在线| 免费在线观看精品| 亚洲一区在线观看网站| 国产三级欧美三级日产三级99| 欧美日韩精品欧美日韩精品一综合| 国产一区二区不卡在线| 亚洲h在线观看| 亚洲日本在线天堂| 久久久久久久久岛国免费| 777a∨成人精品桃花网| 91丨porny丨在线| 成人午夜激情视频| 黑人精品欧美一区二区蜜桃 | 麻豆精品在线看| 一区二区三区四区在线| 精品久久国产老人久久综合| 亚洲综合一区二区三区| 99精品视频一区二区三区| 精品在线播放免费| 五月天亚洲精品| 亚洲一区二区精品视频| 中文字幕一区不卡| 国产日韩亚洲欧美综合| 欧美成人欧美edvon| 欧美激情中文不卡| 久久综合99re88久久爱| 日韩欧美在线不卡| 日韩视频在线你懂得| 欧美老肥妇做.爰bbww视频| 欧美亚州韩日在线看免费版国语版| 99久久久久久99| 99视频国产精品| 99久久免费精品| 91在线国产福利| 色婷婷av一区二区三区软件| 91在线一区二区| 91蝌蚪porny| 91国在线观看| 欧美日本国产视频| 91麻豆精品91久久久久同性| 欧美一区二区网站| 日韩片之四级片| 久久久亚洲精品一区二区三区| 亚洲精品一区二区三区影院| 国产无遮挡一区二区三区毛片日本| 久久蜜桃一区二区| 中文字幕一区二区三区精华液| 中文字幕一区三区| 婷婷开心久久网| 精品一区二区三区免费播放| 国产美女视频一区| 91免费版pro下载短视频| 91在线播放网址| 91精品视频网| 久久久精品国产免大香伊| 国产精品久久久久久户外露出| 国产成人综合在线播放| 91麻豆精品一区二区三区| 欧美图片一区二区三区| 日韩女优制服丝袜电影| 国产精品久久久久久久蜜臀| 亚洲成人在线观看视频| 91免费国产在线| 欧美一区二区在线免费播放| 国产视频不卡一区| 一区二区三区在线视频观看58| 日韩黄色免费电影| 成人精品一区二区三区中文字幕 | 久久久另类综合| 国产精品欧美久久久久无广告| 亚洲午夜久久久久久久久电影院 | 中文字幕av一区二区三区| 亚洲综合男人的天堂| 老司机免费视频一区二区三区| 欧美日本一道本| 国产精品久久久久久久久搜平片| 欧美日韩不卡一区二区| 国产精品日韩成人| 蜜桃视频一区二区三区| 在线观看三级视频欧美| 欧美国产视频在线| 青娱乐精品视频在线| 91香蕉国产在线观看软件| 欧美mv日韩mv国产网站app|