int main(int argc, const char *argv[]) { if(argc!=2) { perror("\nIncorrect Usage!\n\tUse: Consumer [delay]\n\n\t\tWhere [delay] is sleeping time in secs."); exit(EXIT_FAILURE); } int *shared_buffer = create_shared_mem_buffer(); int semid = create_semaphore_set(); char item; int delay=atoi(argv[1]); printf("\n--Configuration-------------------------------\n"); printf("Delay: %d\n",delay); while(1) { semop(semid, &downFull, 1); semop(semid, &downMutex, 1); item = remove_item(semid, shared_buffer); //debug_buffer(shared_buffer); semop(semid, &upMutex, 1); semop(semid, &upEmpty, 1); consume_item(item); sleep(delay); } return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { char filename[MAXSIZE]; char word1[MAXSIZE], word2[MAXSIZE]; int semid = create_semaphore_set(); int fifo; if ((fifo = open("myfifo1", O_RDONLY)) < 0) { printf("open: pipe doesn't exist"); exit(-1); } read(fifo, filename, MAXSIZE); printf("filename: %s\n", filename); read(fifo, word1, MAXSIZE); printf("word1: %s\n", word1); read(fifo, word2, MAXSIZE); printf("word2: %s\n", word2); close(fifo); char arg[100]; strcat(arg, "s/"); strcat(arg, word1); strcat(arg, "/"); strcat(arg, word2); strcat(arg, "/g"); semop(semid, &Wait, 1); // execv for sed if (fork() == 0) { execlp("sed", "sed", "-i", arg, filename, NULL); } wait(NULL); semop(semid, &Signal, 1); semop(semid, &signal1, 1); return 0; }
int main(int argc, char *argv[]) { if (argc < 2) { printf("format: %s <filename>\n", argv[0]); exit(-1); } char filename[MAXSIZE]; strcpy(filename, argv[1]); char word1[MAXSIZE], word2[MAXSIZE], word3[MAXSIZE]; int semid = create_semaphore_set(); scanf("%s", word1); scanf("%s", word2); scanf("%s", word3); int fifo1, fifo2; remove("myfifo1"); remove("myfifo2"); if (mkfifo("myfifo1", 0600)) { printf("mkfifo: error creating named pipe"); exit(-1); } if((fifo1 = open("myfifo1", O_WRONLY)) < 0) { printf("open: pipe doesn't exist"); exit(-1); } if (fork() == 0) { execlp("./p2", "./p2", NULL); } write(fifo1, filename, MAXSIZE); printf("P1: Sending filename to P2\n"); write(fifo1, word1, MAXSIZE); printf("P1: Sending word1 to P2\n"); write(fifo1, word2, MAXSIZE); printf("P1: Sending word2 to P2\n"); close(fifo1); if (mkfifo("myfifo2", 0600)) { printf("mkfifo: error creating named pipe"); exit(-1); } if((fifo2 = open("myfifo2", O_WRONLY)) < 0) { printf("open: pipe doesn't exist"); exit(-1); } if (fork() == 0) { execlp("./p3", "./p3", NULL); } write(fifo2, filename, MAXSIZE); printf("P1: Sending filename to P3\n"); write(fifo2, word3, MAXSIZE); printf("P1: Sending word3 to P3\n"); close(fifo2); semop(semid, &wait1, 1); semop(semid, &wait2, 1); execlp("cat", "cat", filename, NULL); return 0; }