#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).