#include #include #include #include #include #include "consumer.h" #include "producer.h" #include "shared.h" int GetSplitAmount(char* argv); void TestProducerConsumer(void); // TODO: Clean up main // Add ability to send different consumer and producer numbers // Split producer and consumer into different programs // Use exec() to run an instance of producer or consumer on programs // Allow sharedID to be given to other programs through exec() int main(int argc, char* argv[]) { srandom((unsigned int) time(NULL)); int splitLimit = 1; int forkID, sharedID; SharedStruct *sharedMem; if (argc == 2) splitLimit = GetSplitAmount(argv[1]); sharedID = shmget(IPC_EXCL | (key_t)1122, sizeof(SharedStruct), IPC_CREAT | 666); // Create child forks // TODO: Add creating consumers and producers instead of general forks for (int i = 0; i < splitLimit; i++) { forkID = fork(); if (forkID < 0) { fprintf(stderr, "fork failed\n"); exit(1); } if (forkID == 0) { TestProducerConsumer(); break; } printf("Fork number %d created successfully.\n", forkID); } } int GetSplitAmount(char* argv) { int splitAmount; sscanf(argv, "%d", &splitAmount); return splitAmount; } void TestProducerConsumer(void) { Producer(NULL); Consumer(NULL); }