在linux的share memory中,shmget(key_t key, int size, int shmflg)是用來配置共享記憶體的api
其中的size參數是用來指定欲分配的共享內存大小,但我發現若我程式寫成
#define SHMKEY (key_t)7890
int main( void ) {
int shmid = shmget( SHMKEY, 1000, 0666|IPC_CREAT );
則我的size參數若大於1000就會產生shmget: Invalid argument,但若是小於等於1000就能成功執行,
但若是我把程式寫成
int shm_id,i;
key_t key;
char* name = "/dev/shm/myshm2";
key = ftok(name,0);
if(key == -1)
perror("ftok error");
shm_id = shmget(key,4096,IPC_CREAT);
if(shm_id == -1)
{
perror("shmget error");
return;
}
則我的size參數能夠大於1000,但當size大於8192時就又會產生shmget: Invalid argument
有前輩知道我該怎麼寫才能讓size能夠不受限嗎?(當然是在SHMMAX的限制內),因為我可能會需要配置一塊不小的共享記憶體,謝謝!