数值结果超出范围

时间:2012-03-21 08:27:05

标签: c++ c semaphore

我有一个创建信号量的程序。但是当我尝试使用SETALL时,我在错误中得到错误

  

数值结果超出范围

if((temp_semid = semget(IPC_PRIVATE, 250, 0666 | IPC_CREAT)) != -1)
{    
  semun arg; 
  ushort array[100];
  memset(array,0, 100);
  arg.array = array;
  if(semctl(temp_semid, 0, SETALL, arg) == -1){ 
   std::cout << " failed to setall semaphore" << std::endl;
   std::cout << strerror(errno) << std::endl;
    break;
  }    
}

有什么问题?

1 个答案:

答案 0 :(得分:0)

这很有用。

if((temp_semid = semget(IPC_PRIVATE, 250, 0666 | IPC_CREAT)) != -1)
{    
  semun arg; 
  ushort array[100] = { 0 };
  arg.array = array;
  if(semctl(temp_semid, 0, SETALL, arg) == -1){ 
   std::cout << " failed to setall semaphore" << std::endl;
   std::cout << strerror(errno) << std::endl;
    break;
  }    
}

我以错误的方式使用memset。感谢hmjd指出这一点。