home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume14 / sharedmem / part01 / src / client1a.c next >
Encoding:
C/C++ Source or Header  |  1988-05-17  |  795 b   |  35 lines

  1. /* client1a.c
  2. This process, a, writes a string to variable a_var.
  3. It then checks variable b_var for a new value, and if it is, prints it.
  4. It then sleeps for 3 seconds.
  5. */
  6. #include "cm.h"
  7.  
  8. #define BUFFER_LENGTH    1000
  9. char a_data[BUFFER_LENGTH];
  10.  
  11. cm_value a_val = {a_data,BUFFER_LENGTH,0,0}, b_val = {0,0,0,1};
  12.  
  13. main()
  14. {
  15.     cm_variable *a_var, *b_var;
  16.     int seqno = 0;
  17.  
  18.     if (0> cm_init("a",0,0)) exit(-1);
  19.  
  20.     if (!(a_var = cm_declare("a_var",CM_ROLE_NONXWRITER)))
  21.         exit(-1);
  22.     if (!(b_var = cm_declare("b_var",CM_ROLE_READER|CM_ROLE_WAKEUP)))
  23.         exit(-1);
  24.  
  25.     for (;;) {
  26.         sprintf(a_data,"Message from a.  seq #%d",seqno++);
  27.         a_val.size = strlen(a_data) + 1;
  28.         cm_set_value(a_var,&a_val);
  29.         cm_sync(CM_NO_WAIT);
  30.         if (cm_get_new_value(b_var,&b_val))
  31.             printf("b_var: %s\n",b_val.data);
  32.         sleep(3);
  33.     }
  34. }
  35.