Arrêt de getline en C

Ici, j’essaie d’obtenir une entrée d’utilisateur avec getline . Lors de la réception d’une interruption ^C je souhaite que getline s’arrête et reprenne avec mon programme au lieu de le terminer.

J’ai essayé d’écrire une nouvelle ligne sur stdin mais apparemment cela ne fonctionne pas.

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

Alors, quel serait un moyen d’y parvenir?

En supposant que votre code ressemble à ceci:

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

Inclure et lier SIGINT à une fonction de gestionnaire 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 } } 

Ce que je ferais à ce stade est de restructurer le code afin que tout code après le point B soit dans sa propre fonction, appelez-le code_in_b() et appelez code_in_b() dans le gestionnaire.

Plus d’informations: Signaux