#include < sys/types.h > #include < sys/ipc.h > #include < sys/sem.h > int semctl( int semid, int semnun, int cmd, union semun arg )
A chamada de sistema semctl()
permite que operações sejam executadas sobre o conjunto de semáforos especificado pelo semid. A operação a ser executada é especificada por cmd. semnun indica um determinado semáforo dentro do conjunto sobre o qual a operação será executada, se apropriado, ou seja, se existir. arg é um argumento opcional que pode ou não ser usado.A união semun é assim definida:
union semun { int val; /* usado apenas para SETVAL */ struct semid_ds *buf; /* para IPC_STAT e IPC_SET */ ushort *array; /* usado para GETALL e SETALL */ };
Veja o Experimento #5 e as respectivas páginas do manual para maiores informações sobre semáforos. No experimento, a única operação realizada é a operação de remoção, que é especificada pelo comando IPC_RMID.
Para remover o semáforo com ID 10:
#include < sys/types.h > #include < sys/ipc.h > #include < sys/sem.h > int sem_id; ... sem_id = 10; ... if( semctl( sem_id, 0, IPC_RMID, 0) != 0 ) { perror( "semctl" ); }
AIX, Linux, Lynx, SunOS e Solaris
Para maiores informações sobre este comando, consulte a página do manual de seu sistema operacional (comando man).