在C中停止getline

时间:2015-09-23 19:12:59

标签: c signals stdin

我试图通过getline获取用户输入。收到中断^C后,我希望它通过我的程序停止并恢复getline,而不是终止它。

我试图给stdin写一个换行符,但显然这不起作用。

fwrite("\n", 1, 1, stdin);

那么实现这一目标的方法是什么?

1 个答案:

答案 0 :(得分:0)

假设您的代码类似于:

int main(int argc, char **argv) {
    //Code here (point A)
    getline(lineptr, size, fpt);
    //More code here (point B)
}

包含<signal.h>并将SIGINT绑定到处理函数f

#include <signal.h>

//Declare handler for signals
void signal_handler(int signum);

int main(int argc, char **argv) {
    //Set SIGINT (ctrl-c) to call signal handler
    signal(SIGINT, signal_handler);

    //Code here (point A)
    getline(lineptr, size, fpt);
    //More code here (point B)
}

void signal_handler(int signum) {
    if(signum == SIGINT) {
        //Received SIGINT

    }
}

此时我要做的是重构代码,以便B点之后的任何代码都在它自己的函数中,称之为code_in_b(),并在处理程序中调用code_in_b()

更多信息:Signals