scusate per il titolo, ma non mi veniva un modo migliore per chiamarlo.

provo a spiegarmi meglio:
all'inizio faccio pongo temp nella memoria condivisa con shmat() poi c'è il ciclo while con il quale scandisco tutta la memoria(infatti utilizzo strcmp(temp,"")!=0).

il problema mio è if(strcmp(temp,"_")==0)
Mi è stato detto da un ragazzo che programma in c che "_" indica la fine di un messaggio che è stato inserito attraverso il metodo postAMessage().
Un messaggio è composto dai campi "Oggetto e testo" ed è composto da 2 array di caratteri di taglia TAGLIA_OBJ TAGLIA_TXT.
Quindi per spostarmi da un messaggio all'altro incrementerò temp così:
temp += TAGLIA_OBJ + TAGLIA_TXT;

Spero di essere stato un pò più chiaro...scusate ancora


codice:
 void postAMessage(int ds_shm, int ds_sem){
      int letti;
      int ret;
      int index = 1;
      char* temp;
      struct sembuf oper;
      /*Blocco i semafori*/
      oper.sem_num = 0;
      oper.sem_op = -1;
      oper.semflg = 0;
      ret = semop(ds_sem, &oper, 1);  
      oper.sem_num = 1;
      oper.sem_op = -1;
      oper.sem_flg = 0;
      ret = semop(ds_sem, &oper, 1);

      temp = shmat(ds_shm, NULL, SHM_W);
      if(temp == (char*) -1){
        printf("errore nella call shmat\n");
        exit(-1);
      }
      while(strcmp(temp,"")!=0){
        if(strcmp(temp, "_") == 0 || index > NUM_MAX_MSG)
        break;
        else if(index == NUM_MAX_MSG){

          /*Sblocco i semafori*/
          oper.sem_num = 0;
          oper.sem_op = 1;
          oper.sem_flg = 0;
          ret = semop(ds_sem, &oper, 1);

          oper.sem_num = 1;
          oper.sem_op = 1;
          oper.sem_flg = 0;
          ret = semop(ds_sem, &oper, 1);

          printf("Bacheca piena, riprovare più tardi\n");
        }
        else{
          temp += TAGLIA_OBJ + TAGLIA_TXT;
          index ++;
        }
      }
        printf("Oggetto: \n");
        scanf("%s\n", &messaggio.obj);
        strcnpy(temp,messaggio.obj,TAGLIA_OBJ);
        temp += TAGLIA_OBJ; 

        printf("Testo: \n");
        scanf("%s\n",&messaggio.txt);
        strncpy(temp,messaggio.txt, TAGLIA_TXT);
        temp += TAGLIA_TXT; 

        /*Sblocco i semafori*/
        oper.sem_num = 0;
        oper.sem_op = 1;
        oper.sem_flg = 0;       
        ret = semop(ds_sem, &oper, 1);

        oper.sem_num = 1;
        oper.sem_op = 1;
        oper.sem_flg = 0;
        ret = semop(ds_sem, &oper, 1);

        exit(0);

    }