*
* Author: S. Piccardi Jan. 2003
*
- * $Id: DirMonitor.c,v 1.5 2003/01/12 00:24:28 piccardi Exp $
+ * $Id: DirMonitor.c,v 1.8 2003/05/02 09:55:13 piccardi Exp $
*
*****************************************************************************/
#include <sys/types.h>
int tot_char;
int tot_sock;
} *shmptr;
-int shmid;
+key_t key;
int mutex;
int main(int argc, char *argv[])
{
int i, pause = 10;
- key_t key;
/*
* Input section: decode command line parameters
* Use getopt function
Signal(SIGINT, HandSIGTERM);
Signal(SIGQUIT, HandSIGTERM);
key = ftok("~/gapil/sources/DirMonitor.c", 1); /* define a key, use dir */
- shmid = shmget(key, 4096, IPC_CREAT|0666); /* get a shared memory */
- if (shmid < 0) {
+ shmptr = ShmCreate(key, 4096, 0666, 0); /* get a shared memory segment */
+ if (!shmptr) {
perror("Cannot create shared memory");
exit(1);
}
- if ( (shmptr = shmat(shmid, NULL, 0)) == NULL ) { /* attach to process */
- perror("Cannot attach segment");
- exit(1);
- }
if ((mutex = MutexCreate(key)) == -1) { /* get a Mutex */
perror("Cannot create mutex");
exit(1);
void HandSIGTERM(int signo) {
MutexLock(mutex);
debug("Terminated by %s\n", strsignal(signo));
- if (shmdt(shmptr)) {
- perror("Error detaching shared memory");
- exit(1);
- }
- if (shmctl(shmid, IPC_RMID, NULL)) {
- perror("Cannot remove shared memory segment");
- exit(1);
- }
+ ShmRemove(key, shmptr);
MutexRemove(mutex);
exit(0);
}