3

私はこの簡単なプログラムを書きました:

void sig_ha(int signum)
{
cout<<"received SIGINT\n";
}

int main()
{
 string name;
 struct sigaction newact, old;
 newact.sa_handler = sig_ha;
 sigemptyset(&newact.sa_mask);
 newact.sa_flags = 0;
 sigaction(SIGINT,&newact,&old);

 for (int i=0;i<5;i++)
     {
     cout<<"Enter text: ";
     getline(cin,name);
     if (name!="")
         cout<<"Text entered: "<<name;
     cout<<endl;
     }
 return 0;
}

プログラムが入力を待機しているときにCtrl+Cを押すと、次の出力が得られ
ます。テキストを入力してください:SIGINTを受信しました

テキストの入力:
テキストの入力:
テキストの入力:テキストの
入力:

(プログラムは入力を待たずにループを続行します)

私は何をすべきか?

4

1 に答える 1

4

coutステートメントの直前に次を追加してみてください。

cin.clear();  // Clear flags
cin.ignore(); // Ignore next input (= Ctr+C)
于 2009-11-21T11:25:17.527 に答える