我试图通过getline
获取用户输入。收到中断^C
后,我希望它通过我的程序停止并恢复getline,而不是终止它。
我试图给stdin写一个换行符,但显然这不起作用。
fwrite("\n", 1, 1, stdin);
那么实现这一目标的方法是什么?
答案 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