在C中停止getline
在这里,我正在尝试使用getline
获取用户输入。 收到中断^C
我希望它发出getline信号停止并继续使用我的程序而不是终止它。
我试图给stdin写一个换行符,但显然这不起作用。
fwrite("\n", 1, 1, stdin);
那么实现这一目标的方法是什么?
假设您的代码类似于:
int main(int argc, char **argv) { //Code here (point A) getline(lineptr, size, fpt); //More code here (point B) }
包含
并将SIGINT
绑定到处理函数f
。
#include //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()
。
更多信息: 信号