📄 limits.c
字号:
#include "unpipc.h"#define MAX_NIDS 4096intmain(int argc, char **argv)/* $$.bp$$ */{ int i, j, shmid[MAX_NIDS]; void *addr[MAX_NIDS]; unsigned long size; /* 4see how many identifiers we can "open" */ for (i = 0; i <= MAX_NIDS; i++) { shmid[i] = shmget(IPC_PRIVATE, 1024, SVSHM_MODE | IPC_CREAT); if (shmid[i] == -1) { printf("%d identifiers open at once\n", i); break; } } for (j = 0; j < i; j++) Shmctl(shmid[j], IPC_RMID, NULL); /* 4now see how many we can "attach" */ for (i = 0; i <= MAX_NIDS; i++) { shmid[i] = Shmget(IPC_PRIVATE, 1024, SVSHM_MODE | IPC_CREAT); addr[i] = shmat(shmid[i], NULL, 0); if (addr[i] == (void *) -1) { printf("%d shared memory segments attached at once\n", 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\n", 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\n", size-4096); break; } Shmctl(shmid[0], IPC_RMID, NULL); } exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -