Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void sendMessageQueue(int uzenetsor, char * message)
- {
- const struct uzenet uz = {5, message};
- int status;
- status = msgsnd(uzenetsor, &uz, strlen(uz.mtext) + 1, 0);
- // a 3. param ilyen is lehet: sizeof(uz.mtext)
- // a 4. parameter gyakran IPC_NOWAIT, ez a 0-val azonos
- if (status < 0)
- perror("msgsnd");
- }
- // receiving a message.
- void recieveMessageQueue(int uzenetsor)
- {
- struct uzenet uz;
- int status;
- // az utolso parameter(0) az uzenet azonositoszama
- // ha az 0, akkor a sor elso uzenetet vesszuk ki
- // ha >0 (5), akkor az 5-os uzenetekbol a kovetkezot
- // vesszuk ki a sorbol
- status = msgrcv(uzenetsor, &uz, 1024, 5, 0);
- if (status < 0)
- perror("msgsnd");
- else
- printf("A csódbiztos ezt az összegzést kapta: %s\n",uz.mtext);
- }
- //END OF DEFINITLY MY CODE
- void sendSavingAction(Data **myDataarr, int dataCount, char *place, const char *argv[])
- {
- int uzenetsor, status;
- key_t kulcs;
- kulcs = ftok(argv[0], 1);
- uzenetsor = msgget(kulcs, 0600 | IPC_CREAT);
- char pipename[20];
- int fd;
- sprintf(pipename, "/tmp/%dmyuniquechars", getpid());
- int fid = mkfifo(pipename, S_IRUSR | S_IWUSR);
- if (fid == -1)
- {
- remove(pipename);
- int fid = mkfifo(pipename, S_IRUSR|S_IWUSR);
- printf("Error number: %i \n",errno);
- //perror("Gaz van:");
- //exit(EXIT_FAILURE);
- }
- pid_t child = fork();
- if (child > 0) //parent
- {
- //printf("Parent");
- char s[1024] = "Semmi";
- fd = open(pipename,O_RDONLY);
- read(fd, s, sizeof(s));
- //Arrived message from rescue team
- close(fd);
- printf("Csődbiztos ezt a kérést kapta: %s\n", s);
- fd = open(pipename, O_WRONLY);
- char listOfPeople[1024] = "";
- for (size_t i = 0; i < dataCount; i++)
- {
- if (strcmp(place, myDataarr[i]->place) == 0)
- {
- strcat(listOfPeople, myDataarr[i]->name);
- strcat(listOfPeople, "_");
- }
- }
- write(fd, listOfPeople, strlen(listOfPeople));
- close(fd);
- recieveMessageQueue(uzenetsor);
- printf("-------------------------\n");
- sleep(2);
- kill(child, SIGKILL);
- }
- else
- {
- //printf("Rescue team alias child.\n");//mentoexpedicio folyamat
- fd = open(pipename, O_WRONLY);
- write(fd, "Kell a mentésre várók listája\n", 35);
- close(fd);
- sleep(1);
- char s[1024] = "Semmi";
- fd = open(pipename, O_RDONLY);
- read(fd, s, sizeof(s));
- close(fd);
- printf("A mentő csapatok ezt a névsort kapták: %s\n", s);
- int sum = 0;
- for (size_t i = 0; i < strlen(s); i++)
- {
- printf("----\n");
- if (s[i] == '_')
- {
- sum = sum + 1;
- }
- }
- char messageToSend [1024] = "";
- char snum[5];
- sprintf(snum, "%d", sum);
- strcpy(messageToSend,place);
- strcat(messageToSend," ből hozott a mentőexpedíció haza ennyi embert: ");
- strcat(messageToSend,snum);
- printf("TESTPRINT DSDSSDDS %s\n",messageToSend);
- sendMessageQueue(uzenetsor,messageToSend); // Parent sends a message.
- //sleep until killed by parent prevents menu showing twice
- sleep(20);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement