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;