Shmget: Invalid argument. Why i get this error?

来源:互联网 发布:java解决int数值上限 编辑:程序博客网 时间:2024/05/20 20:04

Question:

I get a "shmget: Invalid argument error" while i try to execute this part of code

  int *nFS, *spb, *cell1, shmid;  key_t key = 5768;   //i need a shared memory segment in which i can put 3 ints  if ((shmid = shmget(key, (sizeof(int) * 3), IPC_CREAT | 0666)) < 0 ) {             perror("shmget");             exit(1);       }  if ((spb = (int)shmat(shmid, NULL, 0))== -1 ){              perror("shmat");            exit(1);      }  cell1= spb + 1 ;  nFS= cell1 + 1;  //i try to assign here 7 to  nFS  *nFS=7;

there is something wrong here but i can't figure out what. Can you help me?

Answer:

From the shmget(1) man page:

EINVAL A new segment was to be created and size < SHMMIN or size > SHMMAX, or no new segment was to be created, a segment with given key existed, but size is greater than the size of that segment.

You should check whether you still have an segment for this key using ipcs and remove it withipcrm.


0 0
原创粉丝点击