#include #include #include #include #include #include "pqueue.h" char *filename = "queue.dat"; int itemId = 0; typedef struct item item; struct item { int id; }; item * produce() { //int time = rand() % 5 + 1; int time = 1; item *it = (item *)malloc(sizeof(item)); sleep(time); printf("Produced."); it->id = itemId; itemId += 1; return it; } void consume(item *it) { int time = rand() % 5 + 1; sleep(time); free(it); } void producer(pid_t childPid, pqueue *qu) { for(int i = 0; i<5;i++) { item* item_new = produce(); printf("%d",item_new->id); qinsert(&qu;, item_new, item_new->id); qserialize(qu,sizeof(item_new),filename); } } void consumer(pqueue *qu) { for(int i = 0; i>k); sleep(1); } } int main(int argc, char **argv) { pid_t pid; pqueue *qu = NULL; printf("essa"); /* watch -n 1 ps -l --forest */ /* create empty queue */ qserialize(qu, sizeof(item), filename); //int pid ; printf (" Proces uruchomiony % d \n " , getpid () ) ; pid = fork() ; if ( pid == -1) { perror (" Blad utworzenia procesu potomnego !") ; return 1; } if ( pid == 0) { printf (" Zglasza sie proces potomny % d \n " , getpid () ) ; producer(getpid(), qu); printf("Skonczylem"); } else { printf (" Zlasza sie proces macierzysty % d . Potomek % d \n " , getpid () , pid ) ; } consumer(qu); // producer(1,qu); // pqueue* item_new = qpop(&qu;); // printf("%d/n",item_new->k); return 0; }