Correzioni rimaste indietro ed espansione funzioni del resolver.
[gapil.git] / listati / message_setter.c
1 #define MSGMAXSIZE 256
2
3 int main(int argc, char *argv[]) 
4 {
5     int t = 0, sem_t * sem, void *shm_ptr;
6     char *shmname = "messages";
7     char *semname = "messages";
8     ...
9     // get shared memory segment
10     shm_ptr = FindShm(shmname, MSGMAXSIZE);
11     if ( shm_ptr == NULL) {
12         perror("Cannot find shared memory");
13         exit(1);
14     }
15     // open semaphore
16     if ( (sem = sem_open(semname, 0)) == SEM_FAILED ) {
17         perror("Cannot open semaphore");
18         exit(1);
19     }
20     // get semaphore
21     if ( sem_wait(sem) != 0) {
22         perror("cannot use semaphore");
23         exit(1);
24     }
25     strncpy((char *) shm_ptr, argv[optind],  MSGMAXSIZE); // modify message 
26     printf("Sleeping for %i seconds\n", t);               // print wait time
27     sleep(t);                                             // sleep
28     // release semaphore
29     if ( sem_post(sem) != 0) {
30         perror("cannot release semaphore");
31         exit(1);
32     }
33     exit(0);
34 }