int semid, key;	   	  
union semun {
   int val;
   struct semid_ds *buf;
   unsigned short *array;
   struct seminfo *__buf;
} semval;
...
  
semval.val = 1;

if ((semid = semget(key, 1, 0666|IPC_CREAT)) == -1) 
   return errno;
    
if ( -1 == semctl(semid, 0, SETVAL, semval))
   return errno;   
