Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- #define MAX_ORDERS 100
- typedef enum {
- BURGER,
- FRIES,
- DRINK,
- SALAD
- } OrderType;
- typedef struct {
- int number;
- OrderType type;
- int preparationTime; // in seconds
- int status; // 0 for preparing, 1 for serving, -1 for empty slot
- } Order;
- int main() {
- HANDLE hMapFile;
- Order *orders;
- // Open the existing shared memory created by the producer
- hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "SharedMemory");
- if (hMapFile == NULL) {
- perror("OpenFileMapping");
- exit(EXIT_FAILURE);
- }
- orders = (Order *)MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, MAX_ORDERS * sizeof(Order));
- if (orders == NULL) {
- perror("MapViewOfFile");
- CloseHandle(hMapFile);
- exit(EXIT_FAILURE);
- }
- while (1) {
- system("cls"); // Clear screen for updated display on Windows (use "clear" for Unix-like systems)
- printf("Orders in Preparation:\n");
- for (int i = 0; i < MAX_ORDERS; i++) {
- if (orders[i].status == 0) {
- printf("Order %d (Type: %d) - Preparing...\n", orders[i].number, orders[i].type);
- orders[i].status = 1; // Change status to serving
- Sleep(orders[i].preparationTime * 1000); // Simulate preparation time in milliseconds
- printf("Order %d (Type: %d) - Ready to Serve\n", orders[i].number, orders[i].type);
- orders[i].status = -1; // Mark order as served (-1 indicates empty slot)
- }
- }
- Sleep(1000); // Refresh display every second (1 second = 1000 milliseconds)
- }
- UnmapViewOfFile(orders);
- CloseHandle(hMapFile);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement