static void parse_args(int argc, const char *const argv[]) { (void)argc; while (*argv != NULL) { if (strcmp("--help", *argv) == 0 || strcmp("-?", *argv) == 0) { usage(stderr); exit(0); } else if (strcmp("-to", *argv) == 0) { if (IS_VALID_STRING(*(argv + 1)) == true) { int64_t tmp; argv++; if (lagopus_str_parse_int64(*argv, &tmp) == LAGOPUS_RESULT_OK) { if (tmp >= 0) { s_to = ONE_SEC * tmp; } } else { fprintf(stderr, "can't parse \"%s\" as a number.\n", *argv); exit(1); } } else { fprintf(stderr, "A timeout # is not specified.\n"); exit(1); } } argv++; } }
int main(int argc, const char *const argv[]) { size_t nthds = 8; ssize_t nputs = 1000LL * 1000LL * 10LL; pid_t c_pid; if (argc >= 2) { size_t n; if (lagopus_str_parse_int64(argv[1], (int64_t *)&n) == LAGOPUS_RESULT_OK) { if (n > 0) { nthds = (size_t)n; } } } if (argc >= 3) { ssize_t n; if (lagopus_str_parse_int64(argv[2], (int64_t *)&n) == LAGOPUS_RESULT_OK) { if (n > 0) { nputs = (ssize_t)n; } } } (void)lagopus_signal(SIGHUP, s_sighandler, NULL); (void)lagopus_signal(SIGINT, s_sighandler, NULL); c_pid = fork(); if (c_pid == 0) { is_child = true; return do_run(nthds, nputs); } else if (c_pid > 0) { int st; (void)waitpid(c_pid, &st, 0); return 0; } else { perror("fork"); return 1; } }