52 lines
834 B
C
52 lines
834 B
C
/*
|
|
* krishna balasubramanian 1993
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
#include <sys/shm.h>
|
|
#include <sys/msg.h>
|
|
#include <sys/sem.h>
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
int id;
|
|
union semun arg;
|
|
|
|
arg.val = 0;
|
|
|
|
if (argc != 3 || strlen(argv[1]) < 3) {
|
|
printf ("usage: %s [shm | msg | sem] id\n", argv[0]);
|
|
exit (1);
|
|
}
|
|
id = atoi (argv[2]);
|
|
switch (argv[1][1]) {
|
|
case 'h':
|
|
if (!shmctl (id, IPC_RMID, NULL))
|
|
break;
|
|
perror ("shmctl ");
|
|
exit (1);
|
|
|
|
case 'e':
|
|
if (!semctl (id, 0, IPC_RMID, arg))
|
|
break;
|
|
perror ("semctl ");
|
|
exit (1);
|
|
|
|
case 's':
|
|
if (!msgctl (id, IPC_RMID, NULL))
|
|
break;
|
|
perror ("msgctl ");
|
|
exit (1);
|
|
|
|
default:
|
|
printf ("usage: %s [-shm | -msg | -sem] id\n", argv[0]);
|
|
exit (1);
|
|
}
|
|
printf ("resource deleted\n");
|
|
return 0;
|
|
}
|
|
|