Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Интересные и занимательные задачи по программированию > Процессы и семафоры |
Автор: toshun 18.12.2007, 14:21 |
Задача такая: Запустить в случайном порядке 10 процессов, каждый из которых выводит цифру от 0 до 9. С помощью средств синхронизации добиться, чтобы все цифры были выведены в одной строке в порядке возрастания. #include<unistd.h> #include<sys/types.h> #include<sys/stat.h> #include<sys/mman.h> #include<fcntl.h> #include<stdio.h> #include<stdlib.h> int rand(void); int control(int M[10], int a); void init(int M[10]); pid_t fork (void); int segment(key_t, int nsems, int flags); main(int argc, char *argv[]) { int fd; int k=fork(),i=0,a=0; caddr_t addr_1; fd=open("file",O_RDWR); addr_1=mmap((caddr_t)0, sizeof(int), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); for(i=0;i!=10;i++) { if(k==0) { a=rand()%10; } } } А вот как с помощью семафоров можно вывести на экран числа в порядке возрастания непонятно(под средством синфронизации я понял семафор, если нет, поправьте пожалуйста) |
Автор: PPS05 21.12.2007, 17:03 |
Первое, что приходит в голову - перебирать все цифры от 0 до 9, пока соответствующий семафор не будет в сигнальном состоянии. Как нашли - выводим эту цифру и меняем состояние. |