#include #include #include #include #include #include #include #include #include #include int main() { int shmd = shm_open("/shm", O_RDWR | O_TRUNC | O_CREAT, 0755); ftruncate(shmd, sizeof(int[20])); int* memory = mmap(NULL, sizeof(int[20]), PROT_READ | PROT_WRITE, MAP_SHARED, shmd, 0); srand(time(NULL)); for (int i = 0; i < 20; i++) { memory[i] = rand() % 100; } int fod = fork(); if (fod == 0) { for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { if (memory[i] < memory[j]) { int temp = memory[i]; memory[i] = memory[j]; memory[j] = temp; } } } } else { while (!waitpid(fod, NULL, WNOHANG)) { for (int i = 0; i < 20; i++) { printf("%d ", memory[i]); } printf("\n"); } } munmap(memory, sizeof(int[20])); close(shmd); if (fod != 0) shm_unlink("/shm"); return 0; }