zoukankan      html  css  js  c++  java
  • share memory

    header for public argument:shmdata.h

    #define TEXT_SZ 2048
    
    struct shared_use_st
    
    {
    
            int written;
    
            char text[TEXT_SZ];
    
    };
    
    #endif

    shmread.c

    #include <unistd.h>
    
    #include <stdlib.h>
    
    #include <stdio.h>
    
    #include <sys/shm.h>
    
    #include "shmdata.h"
    
    int main()
    
    {
    
            int running = 1;
    
            void *shm = NULL;
    
            struct shared_use_st *shared;
    
            int shmid;  
    
           shmid = shmget((key_t)1234, sizeof(struct shared_use_st), 0666|IPC_CREAT);
    
            if(shmid == -1)
    
            {
    
                    fprintf(stderr, "shmget failed
    ");
    
                    exit(EXIT_FAILURE);
    
            }
    
            shm = shmat(shmid, 0, 0);
    
            if(shm == (void*)-1)
    
            {  
    
                   fprintf(stderr, "shmat failed
    ");
    
                    exit(EXIT_FAILURE);
    
            }  
    
           shared = (struct shared_use_st*)shm;
    
            shared->written = 0;  
    
           while(running)
    
            {     
    
                if(shared->written != 0)
    
               {  
    
                           printf("You wrote: %s", shared->text);
    
                            sleep(rand() % 3);
    
                            shared->written = 0;  
    
                           if(strncmp(shared->text, "end", 3) == 0)
    
                                    running = 0;
    
                }    
    
                 else
    
                            sleep(1);
    
            }
    
            if(shmdt(shm) == -1)
    
            {
    
                    fprintf(stderr, "shmdt failed
    ");
    
                    exit(EXIT_FAILURE);
    
            }
    
            if(shmctl(shmid, IPC_RMID, 0) == -1)
    
            {
                    fprintf(stderr, "shmctl(IPC_RMID) failed
    ");
                    exit(EXIT_FAILURE);
            }
            exit(EXIT_SUCCESS);
    }

    shmwrite.c

    #include <unistd.h>
    
    #include <stdlib.h>
    
    #include <stdio.h>
    
    #include <string.h>
    
    #include <sys/shm.h>
    
    #include "shmdata.h"
    
    int main()
    
    {
    
            int running = 1;
    
            void *shm = NULL;
    
            struct shared_use_st *shared = NULL;   
    
          char buffer[BUFSIZ + 1];  
    
           int shmid;  
    
           shmid = shmget((key_t)1234, sizeof(struct shared_use_st), 0666|IPC_CREAT);
    
            if(shmid == -1)
    
            {
    
                    fprintf(stderr, "shmget failed
    ");
    
                    exit(EXIT_FAILURE);
    
            }  
    
           shm = shmat(shmid, (void*)0, 0);
    
            if(shm == (void*)-1)
    
            {
    
                    fprintf(stderr, "shmat failed
    ");
    
                    exit(EXIT_FAILURE);
    
            }
    
            shared = (struct shared_use_st*)shm;
    
            while(running)
    
      {
    
                    while(shared->written == 1)
    
                    {
    
                            sleep(1);
    
                            printf("Waiting...
    ");
    
                    }
    
                    printf("Enter some text: ");
    
                    fgets(buffer, BUFSIZ, stdin);
    
                    strncpy(shared->text, buffer, TEXT_SZ);
    
                    shared->written = 1;
    
                    if(strncmp(buffer, "end", 3) == 0)
    
                            running = 0;
    
            }   
    
          if(shmdt(shm) == -1)
    
            {  
    
                   fprintf(stderr, "shmdt failed
    ");
    
                    exit(EXIT_FAILURE);
    
            }
    
            sleep(2);
            exit(EXIT_SUCCESS);
    }
  • 相关阅读:
    ajax三级联动
    ajax基础
    pdo连接数据
    jquery选择器和基本语句
    会话
    封装连接类
    1218数据访问
    php登陆与注册
    数据库连接和乱码问题
    mysql 严格模式 Strict Mode说明(text 字段不能加默认或者 不能加null值得修改方法)
  • 原文地址:https://www.cnblogs.com/edver/p/7154598.html
Copyright © 2011-2022 走看看