⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 limits.c

📁 让你了解Unix进程间的通信是如何实现的
💻 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 + -