![]() |
Модераторы: Alx, Fixin |
![]() ![]() ![]() |
|
toshun |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 10.2.2006 Репутация: нет Всего: нет |
Задача такая: Запустить в случайном порядке 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 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 6.11.2005 Где: Беларусь, Минск Репутация: нет Всего: 7 |
Первое, что приходит в голову - перебирать все цифры от 0 до 9, пока соответствующий семафор не будет в сигнальном состоянии. Как нашли - выводим эту цифру и меняем состояние.
-------------------- Ушел с форума и не вернулся. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |