main()
Last-modified: Wed, 01 Feb 2012 23:15:40 JST (4482d)
Top > main()
概要
- ほげほげする。
引数
- fuga--うんたらの為の構造体
- ほげほげ.cを参照
実装
int main(int argc, char **argv) {
struct pollfd pollfds[3]; int control = -1; int timeout; int status; #ifdef ANDROID_CHANGES control = android_get_control_and_arguments(&argc, &argv); shutdown(control, SHUT_WR); #endif srandom(time(NULL)); if (pipe(signals) == -1) { log_print(FATAL, "Pipe() %s", strerror(errno)); exit(SYSTEM_ERROR); } fcntl(signals[0], F_SETFD, FD_CLOEXEC); fcntl(signals[1], F_SETFD, FD_CLOEXEC); timeout = initialize(argc, argv); signal(SIGHUP, interrupt); signal(SIGINT, interrupt); signal(SIGTERM, interrupt); signal(SIGCHLD, interrupt); signal(SIGPIPE, SIG_IGN); atexit(stop_pppd); pollfds[0].fd = the_socket; pollfds[0].events = POLLIN; pollfds[1].fd = signals[0]; pollfds[1].events = POLLIN; pollfds[2].fd = control; pollfds[2].events = 0; while (timeout >= 0) { if (poll(pollfds, 3, timeout ? timeout : -1) == -1 && errno != EINTR) { log_print(FATAL, "Poll() %s", strerror(errno)); exit(SYSTEM_ERROR); } timeout = pollfds[0].revents ? the_protocol->process() : the_protocol->timeout(); if (pollfds[1].revents) { break; } if (pollfds[2].revents) { interrupt(SIGTERM); } } if (timeout < 0) { status = -timeout; } else { int signal; read(signals[0], &signal, sizeof(int)); log_print(INFO, "Received signal %d", signal); if (signal == SIGCHLD && waitpid(pppd_pid, &status, WNOHANG) == pppd_pid && WIFEXITED(status)) { status = WEXITSTATUS(status); log_print(INFO, "Pppd is terminated (status = %d)", status); status += PPPD_EXITED; pppd_pid = 0; } else { status = USER_REQUESTED; } } stop_pppd(); the_protocol->shutdown(); log_print(INFO, "Mtpd is terminated (status = %d)", status); return status; }
- //コメント
呼出元
- ほげ関数 -- 2005-07-11 (月) 11:45:20
履歴
- 日付:2012/1/31
- 対象:Android
更新日 更新内容