在后台运行超时功能

时间:2018-10-12 16:19:41

标签: c timeout

我有一个功能:

15.8

它超时,就像应该的那样,问题在于它仅在用户不输入任何内容时才起作用。无论用户是否输入任何内容,我都希望它能正常工作。具体来说,如果用户使用箭头选择了其中一个选项,但没有按Enter即可实际选择它。整个问题的关键是,打电话给我的BBS的人如果通过telnet进入该菜单并在菜单上,则他们什么都不做就会超时。我遇到的一个问题是有人打电话给我的BBS,然后登录,但实际上什么也没做。而且它不会像应有的那样退出。锁定BBS上的节点。另外,我想在后台运行此功能。有可能吗?

1 个答案:

答案 0 :(得分:0)

好的。我发现了一个功能完全可以实现我想要的功能。 int waiting() { fd_set input_set; struct timeval timeout; int ready_for_reading = 0; int read_bytes = 0; FD_ZERO(&input_set ); FD_SET(0, &input_set); timeout.tv_sec = WAIT; // WAIT seconds timeout.tv_usec = 0; // 0 milliseconds printf("^[[10;53H^[[1;34;44m LOGIN TO BBS ^[[0;37m", WAIT); printf("^[[11;53H^[[34;46m apply to bbs ^[[0;37m", WAIT); printf("^[[12;53H^[[34;46m page sysop ^[[0;37m", WAIT); printf("^[[13;53H^[[34;46m logout of bbs ^[[0;37m", WAIT); printf("\n", WAIT); ready_for_reading = select(1, &input_set, NULL, NULL, &timeout); if (ready_for_reading == -1) { return -1; } if (ready_for_reading) { } else { exit(1); } return 0; } 。 我将alarm()放在放置alarm(15)函数的位置,然后在不希望超时的地方添加waiting