zoukankan      html  css  js  c++  java
  • systemV shareMemory limit

    目录

      #include "unpipc.h"
      
      #define MAX_NIDS 4096
      
      int main(int argc, char **argv)
      /* $$.bp$$ */
      {
        int i, j, shmid[MAX_NIDS];
        void *addr[MAX_NIDS];
        unsigned long size;
        int maxShmget = 0;
      
        /* 4see how many identifiers we can "open" */
        for (i = 0; i < MAX_NIDS; i++) {
          shmid[i] = shmget(IPC_PRIVATE, 10, SVSHM_MODE | IPC_CREAT);
          if (shmid[i] == -1) {
            maxShmget = i;
            printf("%d identifiers open at once
      ", i);
            break;
          }
        }
        for (j = 0; j < maxShmget; j++) {
          int ret = shmctl(shmid[j], IPC_RMID, NULL);
          (void)ret;
        }
        /* 4now see how many we can "attach" */
        for (i = 0; i < MAX_NIDS && i < maxShmget; i++) {
          shmid[i] = shmget(IPC_PRIVATE, 1024, SVSHM_MODE | IPC_CREAT);
          // printf("shmid num:index%d, id:%d
      ", i, shmid[i]);
          addr[i] = shmat(shmid[i], NULL, 0);
          if (addr[i] == (void *)-1) {
            printf("%d shared memory segments attached at once
      ", i);
            Shmctl(shmid[i], IPC_RMID, NULL); /* the one that failed */
            break;
          }
        }
      
        for (j = 0; j < i; j++) {
          Shmdt(addr[j]);
          Shmctl(shmid[j], IPC_RMID, NULL);
        }
      
        /* 4see how small a shared memory segment we can create */
        for (size = 1;; size++) {
          shmid[0] = shmget(IPC_PRIVATE, size, SVSHM_MODE | IPC_CREAT);
          if (shmid[0] != -1) { /* stop on first success */
            printf("minimum size of shared memory segment = %lu
      ", size);
            Shmctl(shmid[0], IPC_RMID, NULL);
            break;
          }
        }
      
        /* 4see how large a shared memory segment we can create */
        for (size = 65536;; size += 4096) {
          shmid[0] = shmget(IPC_PRIVATE, size, SVSHM_MODE | IPC_CREAT);
          if (shmid[0] == -1) { /* stop on first failure */
            printf("maximum size of shared memory segment = %lu
      ", size - 4096);
            break;
          }
          Shmctl(shmid[0], IPC_RMID, NULL);
        }
      
        exit(0);
      }
      
      
    • 相关阅读:
      Java [Leetcode 319]Bulb Switcher
      Java [Leetcode 122]Best Time to Buy and Sell Stock II
      谱聚类算法
      Java [Leetcode 238]Product of Array Except Self
      Java [Leetcode 260]Single Number III
      X++ StrFix方法
      D365 FO第三方访问https证书问题
      D365 FO 使用.NET DLL
      D365 FO第三方集成(四)---客户端调用
      D365 FO第三方集成(三)---服务实现
    • 原文地址:https://www.cnblogs.com/ims-/p/13801575.html
    Copyright © 2011-2022 走看看