All pastes #1284889 Raw Edit

Miscellany

public text v1 · immutable
#1284889 ·published 2008-12-14 11:21 UTC
rendered paste body
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define BUFF_SIZE 1024

typedef struct {
  int statusz;
  char buff[BUFF_SIZE];  
} comm_t;

#define SHMSZ (sizeof(comm_t))
#define KLIENSRE_VARUNK 0
#define SZERVERRE_VARUNK 1

main()
{
    char c, x;
    int shmid;
    key_t key;
    comm_t *comm = NULL;
    char temp[512];
    int length = 0;
    FILE *f;

    key = 5555;

    
    if ((shmid = shmget(key, SHMSZ, IPC_CREAT | 0666)) < 0) {
        perror("shmget");
        exit(1);
    }

    if ((comm = shmat(shmid, NULL, 0)) == (char *) -1) {
        perror("shmat");
        exit(1);
    }
    while (1)
    {
      while (comm->statusz != KLIENSRE_VARUNK)
         sleep(1);

      // Ha visszaadott vmit, kiirjuk (elso futasnal NULL lesz benne a memset miatt
      if (strlen(comm->buff))
        printf("Ezt kaptuk: '%s'\n", comm->buff);
      
      fgets(comm->buff, BUFF_SIZE, stdin); // beolvassuk
      // \n\r vagy \r\n t kiszedjuk vegerol
      if (strchr(comm->buff, '\n')) *strchr(comm->buff, '\n') = NULL;            
      if (strchr(comm->buff, '\r')) *strchr(comm->buff, '\r') = NULL;

      comm->statusz = SZERVERRE_VARUNK;
    }
}