projects
/
gapil.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Inizio descrizione programma di monitoraggio del messaggio su memoria
[gapil.git]
/
sources
/
message_getter.c
diff --git
a/sources/message_getter.c
b/sources/message_getter.c
index 3c94b2d4bc46cf845fb58e45a420769fcf4a2884..5ffba091b1a1c1a2b4910b026bc0194e70cb9fda 100644
(file)
--- a/
sources/message_getter.c
+++ b/
sources/message_getter.c
@@
-41,18
+41,18
@@
*/
/* Help printing routine */
void usage(void);
*/
/* Help printing routine */
void usage(void);
+void HandSigInt(int sig);
#define MSGMAXSIZE 256
#define MSGMAXSIZE 256
+char *shmname = "messages";
+char *semname = "messages";
int main(int argc, char *argv[])
{
int i;
sem_t * sem;
int main(int argc, char *argv[])
{
int i;
sem_t * sem;
- time_t t;
- char *shmname = "messages";
- char *semname = "messages";
- char * res;
void * shm_ptr;
void * shm_ptr;
+ time_t t;
/*
* Input section: decode command line parameters
* Use getopt function
/*
* Input section: decode command line parameters
* Use getopt function
@@
-92,8
+92,8
@@
int main(int argc, char *argv[])
printf("Wrong number of arguments %d\n", argc - optind);
usage();
}
printf("Wrong number of arguments %d\n", argc - optind);
usage();
}
+ Signal(SIGINT, HandSigInt);
// Get shared memory segment
// Get shared memory segment
- RemoveShm(shmname);
shm_ptr = CreateShm(shmname, MSGMAXSIZE, 0666, 0);
if ( shm_ptr == NULL) {
perror("Cannot find shared memory");
shm_ptr = CreateShm(shmname, MSGMAXSIZE, 0666, 0);
if ( shm_ptr == NULL) {
perror("Cannot find shared memory");
@@
-110,14
+110,13
@@
int main(int argc, char *argv[])
if ( sem_getvalue(sem, &i) != 0) {
perror("cannot get initial semaphore value");
exit(1);
if ( sem_getvalue(sem, &i) != 0) {
perror("cannot get initial semaphore value");
exit(1);
- } else
{
- if (i == 0)
{
+ } else
+ if (i == 0)
if ( sem_post(sem) != 0) {
perror("cannot do semaphore initial release");
exit(1);
}
if ( sem_post(sem) != 0) {
perror("cannot do semaphore initial release");
exit(1);
}
- }
- }
+ // main loop
while(1) {
// acquire semaphore
if ( sem_wait(sem) != 0) {
while(1) {
// acquire semaphore
if ( sem_wait(sem) != 0) {
@@
-150,3
+149,10
@@
void usage(void) {
printf(" -s semname use semname semaphore\n");
exit(1);
}
printf(" -s semname use semname semaphore\n");
exit(1);
}
+
+void HandSigInt(int sig)
+{
+ RemoveShm(shmname);
+ sem_unlink(semname);
+ exit(0);
+}