#pragma once void print_help(const char *progname) { printf("Использование: %s [опции]\n", progname); printf(" -h, --help показать это сообщение\n"); printf(" -t, --threads N указать число потоков\n"); printf(" -i, --iterations N указать число повторения тестов\n"); printf(" -j, --json вывод в виде json\n"); printf(" -p, --pretest-delay N указать сколько секунд ждать\n\t\t\tперед проверкой памяти после записи\n"); printf(" --simulate-errors создаёт ошибки с вероятностью\n\t\t\t%%0.0001 каждый на 1 из 1000 проверок\n"); printf(" -m, --mod N устанавливает уроветь привелигированости\n\t\t\t0 - not root 1 - onli root 2 - kernel mod.\n"); printf(" --test Устанавливает mem_size на 100000000\n"); } void aaa(int* argc, char *argv[], int* pretest_delay){ const struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"threads", required_argument, 0, 't'}, {"verbose", no_argument, 0, 'v'}, {"iterations", required_argument, 0, 'i'}, {"json", no_argument, 0, 'j'}, {"pretest-delay", no_argument, 0, 'p'}, {"simulate-errors", no_argument, 0, 0}, {"mod", required_argument, 0, 'm'}, {"test", no_argument, 0, 0}, {0, 0, 0, 0} }; int opt; int long_index = 0; while ((opt = getopt_long(*argc, argv, "ht:i:jp:m:t", long_options, &long_index)) != -1) { switch (opt) { case 'h': print_help(argv[0]); exit(0); case 't': args.tred = atoi(optarg); break; case 'i': args.iterations = atoi(optarg); break; case 'p': *pretest_delay = atoi(optarg); break; case 'j': args.json = 1; break; case 'm': args.mod_status = atoi(optarg); break; case 0: // Only long option with no short version if (strcmp(long_options[long_index].name, "test") == 0) { args.test = 1; } else if (strcmp(long_options[long_index].name, "simulate-errors") == 0) { args.simulate_errors = 1; } break; default: print_help(argv[0]); exit(1); } } }