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

鍵盤上的舞者

My Email: marckywu@gmail.com
隨筆 - 19, 文章 - 0, 評論 - 3, 引用 - 0
數據加載中……

system V IPC —— 共享內存(下)

使用共享內存和記錄鎖實例。本例中,父進程創建一段共享內存,然后向其中追加字符串"Parent"(在寫入“Parent”的時候,采用一個字符一個字符的寫入,目的是為了驗證記錄鎖對父子進程同步的正確性);子進程向共享內存中追加字符串“Child”(同樣是一個一個的字符寫入)。由于記錄鎖是針對文件的,所以得先創建一個空文件作為記錄鎖的操作對象,作為共享內存訪問的輔助工具,如果一個進程對這個空文件加寫鎖成功后,就開始訪問共享內存,訪問結束就對文件解鎖。

代碼如下:
#include <stdio.h>
#include 
<stdlib.h>
#include 
<string.h>

#include 
<unistd.h>
#include 
<sys/types.h>

#include 
<sys/wait.h>
#include 
<fcntl.h>

#include 
<sys/ipc.h>
#include 
<sys/shm.h>

#define SHM_SIZE 1024            /* shared memory size(bytes) */
#define SHM_MODE 0600            /* user read/write */

#define WRITE_LOCK(fd) regLock((fd), F_SETLKW, F_WRLCK, 0, SEEK_SET, 0) 
#define UN_LOCK(fd) regLock((fd), F_SETLK, F_UNLCK, 0, SEEK_SET, 0) 
/* 創建一個文件 */
int createFile()
{
    
int fd;

    
if ( (fd = open("/tmp/emptyfile4shm", O_RDWR | O_CREAT, 0666)) < 0) {
        fprintf(stderr, 
"Create a empty file failed!\n");
        exit(EXIT_FAILURE);
    }

    
return fd;
}
/* 在文件fd上加鎖或解鎖*/
int regLock(int fd, int cmd, int type, off_t offset, int whence, off_t len)
{
    
struct flock lock;

    
lock.l_type = type;         /* lock type: F_RDLCK, F_WRLCK, F_UNLCK */
    
lock.l_start = offset;      /* byte offset relative to l_whence */
    
lock.l_whence = whence;    /* it's value : SEEK_SET, SEEK_CUR, SEEK_END */
    
lock.l_len = len;           /* bytes (0 means to EOF) */

    
return fcntl(fd, cmd, &lock);
}

int main(void)
{
    
int shmid;
    
int filed;
    pid_t pid;
    
char *shmptr = NULL;

    filed 
= createFile();

    
if ( (shmid = shmget(IPC_PRIVATE, SHM_SIZE, SHM_MODE)) < 0) { /* Create shared memory */
        fprintf(stderr, 
"Create shared memory failed!\n");
        exit(EXIT_FAILURE);
    }

    
if ( (pid = fork()) < 0) {  /* Create a child process */
        fprintf(stderr, 
"Create child process failed!\n");
        exit(EXIT_FAILURE);
    }

    
if (pid == 0) {             /* In child process */
        
if ( (shmptr = shmat(shmid, 00)) == (void *)-1) {
            fprintf(stderr, 
"Attached shared memory failed!\n");
            exit(EXIT_FAILURE);
        }
        
while (1) {
            WRITE_LOCK(filed);  
/* add a write lock to filed */
            
/* shared memory 剩余的空間不能存儲"Child"字符串和結束符0時就退出循環 */
            
if (SHM_SIZE - strlen(shmptr) < strlen("Child"+ 1break
            strcat(shmptr, 
"C"); /* 由于加了鎖,每個Child將會連續出現 */
            strcat(shmptr, 
"h");
            strcat(shmptr, 
"i");
            strcat(shmptr, 
"l");
            strcat(shmptr, 
"d");
            UN_LOCK(filed);     
/* release lock */
        }
        printf(
"child process:\n\t%s\n", shmptr); /* child process print shared memory */
            
        exit(
0);
    }

    
/* In parent process */
    
if ( (shmptr = shmat(shmid, 00)) == (void *)-1) { /* Attached shared memory */
        fprintf(stderr, 
"Attached shared memory failed!\n");
        exit(EXIT_FAILURE);
    }
    
    
while (1) {
        WRITE_LOCK(filed);
        
/* shared memory 剩余的空間不能存儲"Parent"字符串和結束符0時就退出循環 */
        
if (SHM_SIZE - strlen(shmptr) < strlen("Parent"+ 1break;
        strcat(shmptr, 
"P");/* 由于加了鎖,每個Parent將會連續出現 */
        strcat(shmptr, 
"a");
        strcat(shmptr, 
"r");
        strcat(shmptr, 
"e");
        strcat(shmptr, 
"n");
        strcat(shmptr, 
"t");
        UN_LOCK(filed);
    }
    printf(
"parent process:\n\t%s\n", shmptr); /* parent print shared memory */

    wait(
0);
    exit(
0);
}
    
            
    
    


posted on 2009-08-20 14:57 Marcky 閱讀(518) 評論(0)  編輯 收藏 引用 所屬分類: Linux

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产综合18久久久久久| 久久亚洲综合色| 国产一区二区三区网站| 国产精品视频成人| 国产精品免费看| 国产欧美一区二区三区沐欲 | 久久久亚洲欧洲日产国码αv| 亚洲欧美三级在线| 亚洲欧美国内爽妇网| 国模私拍一区二区三区| 性久久久久久久久| 亚洲欧美在线另类| 久久精品免费播放| 久久成人精品电影| 先锋影音久久| 免费精品视频| 亚洲最新在线| 欧美影院成人| 一道本一区二区| 午夜精品久久久久久久久久久久 | 亚洲精品日韩综合观看成人91| 亚洲精选91| 午夜精品免费| 狂野欧美激情性xxxx| 欧美精品一区二区久久婷婷| 国产精品久久久久久亚洲调教| 国产欧美一区二区视频| 亚洲激情一区二区| 香蕉久久精品日日躁夜夜躁| 欧美大片va欧美在线播放| 亚洲另类视频| 欧美专区日韩专区| 欧美日韩美女一区二区| 国产一区二区三区在线观看免费视频| 亚洲福利免费| 久久精品99国产精品日本| 欧美激情一区三区| 亚洲免费在线看| 欧美久久影院| 亚洲黄网站黄| 久久久免费精品视频| 一本色道久久综合精品竹菊 | 国产精品久久综合| 亚洲日本精品国产第一区| 午夜在线精品| 99精品国产热久久91蜜凸| 蜜臀99久久精品久久久久久软件| 久久久久免费观看| 一本久久综合| 欧美日韩久久| 99av国产精品欲麻豆| 久久免费少妇高潮久久精品99| 一区二区欧美在线观看| 欧美高清hd18日本| 国自产拍偷拍福利精品免费一| 这里只有精品在线播放| 亚洲成人在线视频播放| 亚洲午夜精品网| 亚洲午夜国产一区99re久久| 欧美视频日韩| 欧美韩日高清| 亚洲第一免费播放区| 久久久久久久久岛国免费| 在线亚洲精品| 国产精品www色诱视频| 中文日韩欧美| 一区二区三区精密机械公司| 欧美三区在线视频| 亚洲素人在线| 999亚洲国产精| 国产精品久久国产精品99gif| 亚洲网站啪啪| 亚洲一区二区伦理| 国产欧美日韩精品一区| 欧美一区二区三区四区视频| 91久久在线视频| 欧美精品亚洲精品| 日韩一级在线观看| aaa亚洲精品一二三区| 国产精品九九| 久久精品亚洲一区二区| 久热这里只精品99re8久| 久久精品国产69国产精品亚洲 | 国产一区二区三区视频在线观看| 久久国产欧美| 久久免费国产精品| 亚洲日本欧美| 中文日韩在线视频| 国产在线播精品第三| 亚洲第一精品影视| 欧美日韩在线免费视频| 亚洲欧美日韩一区在线观看| 校园春色综合网| 91久久精品日日躁夜夜躁欧美 | 亚洲欧洲综合另类| 欧美亚洲第一页| 久久综合给合| 欧美日韩亚洲一区三区| 久久av一区| 欧美国产精品久久| 性欧美大战久久久久久久免费观看| 午夜精品久久久久久久久| 亚洲欧洲精品一区二区三区 | 亚洲欧美日本伦理| 亚洲高清色综合| 99国产一区| 亚洲国产精选| 亚洲制服av| 亚洲片国产一区一级在线观看| 日韩西西人体444www| 国产一区二区三区在线播放免费观看| 欧美激情女人20p| 国产精品人成在线观看免费 | 中日韩美女免费视频网址在线观看 | 亚洲欧美清纯在线制服| 亚洲欧美视频一区二区三区| 夜夜嗨av色综合久久久综合网| 久久免费黄色| 亚洲精品一线二线三线无人区| 亚洲第一成人在线| 国产麻豆综合| 免费亚洲婷婷| 欧美国产综合视频| 久久久久久国产精品mv| 国产日韩在线看| 久久综合色88| 欧美在线看片a免费观看| 欧美成人久久| 欧美午夜片欧美片在线观看| 又紧又大又爽精品一区二区| 欧美激情中文字幕一区二区| 久久精品国产成人| 亚洲一级一区| 免费久久99精品国产自在现线| 免费不卡亚洲欧美| 亚洲天堂成人在线视频| 国产欧美视频一区二区三区| 久久久青草婷婷精品综合日韩| 欧美福利视频在线观看| 正在播放欧美视频| 欧美日韩一区在线观看| 欧美久久久久| 欧美黑人多人双交| 国产日韩一区二区三区在线| 亚洲精品一区在线观看| 91久久精品日日躁夜夜躁欧美| 欧美伊久线香蕉线新在线| 亚洲在线一区二区三区| 日韩视频免费观看| 欧美在线观看www| 久久国产精品久久久久久电车| 国产精品嫩草99a| 亚洲在线观看视频| 欧美一区三区三区高中清蜜桃| 国产精品jvid在线观看蜜臀| 99在线|亚洲一区二区| 亚洲影院免费| 国产精品久久久爽爽爽麻豆色哟哟| 99riav国产精品| 亚洲综合首页| 国产欧美一区二区色老头 | 免费亚洲一区| 亚洲精品视频在线观看免费| 免费观看日韩av| 日韩午夜中文字幕| 欧美一级视频免费在线观看| 国产亚洲视频在线| 久久综合久久久久88| 亚洲人午夜精品| 亚洲一区二区黄色| 国产婷婷色一区二区三区| 久久久夜夜夜| 日韩午夜av| 久久国产精品毛片| 日韩视频在线免费| 国产精品美女久久久浪潮软件| 欧美亚洲在线视频| 亚洲国产精品一区二区第四页av| 一区二区三区欧美| 国产视频一区在线观看一区免费| 久久久精彩视频| 日韩视频在线播放| 久久一二三国产| 亚洲国产成人av| 国产精品久久久久久亚洲调教| 久久精品一本| 一本到12不卡视频在线dvd| 久久在线免费观看| 中文精品视频一区二区在线观看| 黄色小说综合网站| 欧美三级视频在线观看| 久久久久久夜| 亚洲免费一在线| 亚洲精品视频在线观看免费| 久久久久五月天| 亚洲视频在线一区观看| 亚洲激情视频在线播放| 国产一区二区三区四区hd| 国产精品白丝av嫩草影院 | 久久久久国产精品一区二区|