Важная информация
Показано с 1 по 2 из 2

Тема: Библиотека "mes.h" not found

  1. #1 Библиотека "mes.h" not found 
    Новичок
    Регистрация
    13.01.2019
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    В Clion компилятор не видит библиотеку "mes.h". Есть ли альтернатива этой библиотеке? Т.к. она является устаревшей.
    Сама собой представляет библиотеку для реализаций сообщений и осуществления работы между процессами. Для моей программы она необходима.
    В коде вместо каналов(pipe) нужно реализовать сообщения, а без этой библиотеки никак не получается в принципе.
    C++ Code:
    1. /**
    2.  * Программа моделирования управления движением на уличном перекрестке.
    3.  *
    4.  * Движение на каждой из 3-х прилегающих к перекрестку улиц моделируется отдельным процессом.
    5.  * Процесс имитирует подъезжающие к перекрестку автомобили случайным образом, интенсивности потоков
    6.  * от процессов различны. В начале работы светофор переключается с равными интервалами. По мере
    7.  * накопления статистики по интенсивностям потоков время переключения светофора изменяется. Передача
    8.  * информации процессу, имитирующему светофор, выполняется через сообщения.
    9.  *
    10.  * @author Федосеев Вячеслав.
    11.  * @since v1.0
    12.  */
    13. #include <iostream>
    14. #include <unistd.h>
    15. #include <signal.h>
    16. #include "stdlib.h"
    17. #include "mes.h"
    18.  
    19. using namespace std;
    20.  
    21. // Тайминги
    22. const int T_ALONE = 10000;
    23. const int T_PROV = 100;
    24. const int T_TRAFFIC_LIGHT = 1000;
    25. const int TIME = 3;
    26. const int LIMIT = 100;
    27.  
    28. /**
    29.  * Заданный таймер
    30.  * @param time время
    31.  */
    32. void delay(long time) {
    33. for (long i = 1; i < time; i++);
    34. }
    35.  
    36. /**
    37.  * Процесс светофора
    38.  *
    39.  * @param fd
    40.  * @param fd_count1
    41.  * @param fd_count2
    42.  * @param fd_count3
    43.  * @return идентификатор процесса
    44.  */
    45. int process_traffic_light(int fd[2], int fd_count1[2], int fd_count2[2], int fd_count3[2]) {
    46. int pid;
    47. int t1, t2, t3;
    48. int buf[1];
    49. int count1[1], count2[1], count3[1];
    50.  
    51. // Создаем новый процесс
    52. pid = fork();
    53.  
    54. if (pid < 0) {
    55. cout << "Не создан процесс светофора!" << endl;
    56. exit(1);
    57. }
    58.  
    59. if (pid == 0) {
    60. while (true) {
    61. read(fd_count1[0], count1, sizeof(count1));
    62. write(fd_count1[1], count1, sizeof(count1));
    63. read(fd_count2[0], count2, sizeof(count2));
    64. write(fd_count2[1], count2, sizeof(count2));
    65. read(fd_count3[0], count3, sizeof(count3));
    66. write(fd_count3[1], count3, sizeof(count3));
    67.  
    68. if (count1[0] + count2[0] + count3[0] > LIMIT) {
    69. t1 = 3 * T_TRAFFIC_LIGHT * count1[0] / (count1[0] + count2[0] + count3[0]);
    70. t2 = 3 * T_TRAFFIC_LIGHT * count2[0] / (count1[0] + count2[0] + count3[0]);
    71. t3 = 3 * T_TRAFFIC_LIGHT * count3[0] / (count1[0] + count2[0] + count3[0]);
    72. }
    73. else {
    74. t1 = t2 = t3 = T_TRAFFIC_LIGHT;
    75. }
    76.  
    77. buf[0] = 1;
    78. write(fd[1], buf, sizeof(buf));
    79. delay(t1);
    80. buf[0] = 2;
    81. write(fd[1], buf, sizeof(buf));
    82. delay(t2);
    83. buf[0] = 3;
    84. write(fd[1], buf, sizeof(buf));
    85. delay(t3);
    86. }
    87. }
    88.  
    89. return pid;
    90. }
    91.  
    92. /**
    93.  * Процесс проезда машин через перекресток
    94.  * @param fd
    95.  * @param fd1
    96.  * @param fd2
    97.  * @param fd3
    98.  * @return идентификатор процесса
    99.  */
    100. int process_prov(int fd[2], int fd1[2], int fd2[2], int fd3[2]) {
    101. int pid;
    102. int t;
    103. int way[1];
    104. int sw = 0;
    105. int buf[1];
    106.  
    107. // Создаем новый процесс
    108. pid = fork();
    109.  
    110. if (pid < 0) {
    111. cout << "Не создан процесс перекресток!" << endl;
    112. exit(1);
    113. }
    114.  
    115. if (pid == 0) {
    116. while (true) {
    117. if (read(fd[0], way, sizeof(way)) > 0)
    118. sw = way[0];
    119. switch (sw) {
    120. case 1:
    121. read(fd1[0], buf, sizeof(buf));
    122. if (buf[0] > 0)
    123. buf[0]--;
    124. write(fd1[1], buf, sizeof(buf));
    125. t = (int)(((float)rand() / RAND_MAX) * T_PROV);
    126. delay(t);
    127. break;
    128. case 2:
    129. read(fd2[0], buf, sizeof(buf));
    130. if (buf[0] > 0)
    131. buf[0]--;
    132. write(fd2[1], buf, sizeof(buf));
    133. t = (int)(((float)rand() / RAND_MAX) * T_PROV);
    134. delay(t);
    135. break;
    136. case 3:
    137. read(fd3[0], buf, sizeof(buf));
    138. if (buf[0] > 0)
    139. buf[0]--;
    140. write(fd3[1], buf, sizeof(buf));
    141. t = (int)(((float)rand() / RAND_MAX) * T_PROV);
    142. delay(t);
    143. break;
    144. }
    145. }
    146. }
    147.  
    148. return pid;
    149. }
    150.  
    151. /**
    152.  * Процесс создания машин
    153.  * @param fd файловый дескриптор
    154.  * @param fd_count файловый дескриптор, содержащий количество машин
    155.  * @return идентификатор процесса
    156.  */
    157. int process_cars(int fd[2], int fd_count[2]) {
    158. int pid;
    159. int t;
    160. int buf[1];
    161. int cnt[1];
    162.  
    163. // Создание процесса
    164. pid = fork();
    165.  
    166. if (pid < 0) {
    167. cout << "Не создан процесс создания машин!" << endl;
    168. exit(1);
    169. }
    170.  
    171. if (pid == 0) {
    172. while (true) {
    173. t = (int)(((float)rand() / RAND_MAX) * T_ALONE); // Время прихода транзактов
    174. delay(t);
    175. read(fd[0], buf, sizeof(buf));
    176. buf[0]++;
    177. write(fd[1], buf, sizeof(buf));
    178. read(fd_count[0], cnt, sizeof(cnt));
    179. cnt[0]++;
    180. if (write(fd_count[1], cnt, sizeof(cnt)) == -1) {
    181. break;
    182. };
    183. }
    184. }
    185.  
    186. return pid;
    187. }
    188.  
    189. int main() {
    190. int pid1, pid2, pid3, pid_traffic_light, pid_prov;
    191. int buf1[1], buf2[1], buf3[1], cnt1[1], cnt2[1], cnt3[1];
    192. int fd1[2], fd2[2], fd3[2], fd[2];
    193. int count1[2], count2[2], count3[2];
    194.  
    195. buf1[0] = 0;
    196. buf2[0] = 0;
    197. buf3[0] = 0;
    198. cnt1[0] = 0;
    199. cnt2[0] = 0;
    200. cnt3[0] = 0;
    201.  
    202. // Заполняем массив двумя новыми файловыми дескрипторами (fd, fd1, fd2, fd3, count1, count2, count3)
    203. pipe(fd1);
    204. pipe(fd2);
    205. pipe(fd3);
    206. pipe(fd);
    207.  
    208. pipe(count1);
    209. pipe(count2);
    210. pipe(count3);
    211.  
    212. // Записываем данные с буфера в файловый дескриптор fd1, fd2, fd3
    213. write(fd1[1], buf1, sizeof(buf1) * 2);
    214. write(fd2[1], buf2, sizeof(buf2) * 2);
    215. write(fd3[1], buf3, sizeof(buf3) * 2);
    216.  
    217. // Записываем данные с буфера в файловый дескриптор count1, count2, count3
    218. write(count1[1], cnt1, sizeof(cnt1) * 2);
    219. write(count2[1], cnt2, sizeof(cnt2) * 2);
    220. write(count3[1], cnt3, sizeof(cnt3) * 2);
    221.  
    222. // Создаем процессы светофора, проезды машин через перекресток
    223. pid_traffic_light = process_traffic_light(fd, count1, count2, count3);
    224. pid_prov = process_prov(fd, fd1, fd2, fd3);
    225.  
    226. // Создаем процессы создания машин для дорог 1, 2, 3
    227. pid1 = process_cars(fd1, count1);
    228. pid2 = process_cars(fd2, count2);
    229. pid3 = process_cars(fd3, count3);
    230.  
    231. cout << "Пожалуйста, подождите..." << endl;
    232. sleep(TIME);
    233.  
    234. // Убиваем все процессы
    235. kill(pid1, SIGKILL);
    236. kill(pid2, SIGKILL);
    237. kill(pid3, SIGKILL);
    238. kill(pid_traffic_light, SIGKILL);
    239. kill(pid_prov, SIGKILL);
    240.  
    241. // Считываем данные с файлового дескриптора fd1, fd2, fd3 и сохраняем данные в буфер buf1, buf2, buf3.
    242.  
    243. read(fd1[0], buf1, sizeof(buf1) * 2);
    244. read(fd2[0], buf2, sizeof(buf2) * 2);
    245. read(fd3[0], buf3, sizeof(buf3) * 2);
    246. read(count1[0], cnt1, sizeof(cnt1) * 2);
    247. read(count2[0], cnt2, sizeof(cnt2) * 2);
    248. read(count3[0], cnt3, sizeof(cnt3) * 2);
    249.  
    250. cout << endl;
    251. cout << "Количество машин, стоящие на 1 дороге = " << buf1[0] << endl;
    252. cout << "Количество машин, стоящие на 2 дороге = " << buf2[0] << endl;
    253. cout << "Количество машин, стоящие на 3 дороге = " << buf3[0] << endl;
    254.  
    255. cout << endl;
    256. cout << "Количество машин, проехавшие мимо 1 светофора = " << cnt1[0] << endl;
    257. cout << "Количество машин, проехавшие мимо 2 светофора = " << cnt2[0] << endl;
    258. cout << "Количество машин, проехавшие мимо 3 светофора = " << cnt3[0] << endl;
    259.  
    260. cout << endl;
    261. cout << "Количество машин, проехавшие мимо всех светофоров = " << cnt1[0] + cnt2[0] + cnt3[0] << endl;
    262.  
    263. return 0;
    264. }
    Ответить с цитированием  
     

  2. #2  
    Новичок
    Регистрация
    16.07.2018
    Сообщений
    19
    Сказал(а) спасибо
    1
    Поблагодарили 16 раз(а) в 12 сообщениях
    Я думаю все он увидит, если положить библиотеку в правильный каталог.
    Можете положить mes.h в каталог с исходником - найдет точно, никуда не денется.
    А можно (более правильно) добавить буть до библиотеки к переменной среды PATH.
    Ответить с цитированием  
     

  3. Пользователь сказал cпасибо:

    >Quiet Snow< (08.04.2019)

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. В чём может быть проблема или "Как люди не понимают простых вещей"
    от Lerya в разделе Общие вопросы программирования
    Ответов: 1
    Последнее сообщение: 11.02.2018, 20:24
  2. Конвертер "Бэйсик" -> "Паскаль" (от Catstail).
    от Апострофф в разделе Разработки на VBA
    Ответов: 4
    Последнее сообщение: 27.04.2015, 18:27
  3. Конвертер "Бэйсик" -> "Паскаль" (от Catstail).
    от Апострофф в разделе Pascal
    Ответов: 0
    Последнее сообщение: 27.04.2015, 16:25
  4. Ответов: 4
    Последнее сообщение: 02.12.2011, 16:39
  5. Ответов: 5
    Последнее сообщение: 24.05.2011, 12:53
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •