現在、シグナル (この場合は SIGINT) を使用して、accept() および/または write() の待機から抜け出そうとしています。私のプログラムは期待どおりに終了しません。
void sigHandler(int signal ){
printf(" Exit\n");
//x is global
x = 1;
return;
}
私がハングアップしているメインから切り取ったものは主に次のとおりです。
clientfd = accept( sockfd, (struct sockaddr *) &client_addr, (unsigned int *) &client_addr_len );
これをヒットしてシグナルを使用して戻ると、まだこのコード行でスタックしており、ユーザーがソケットに接続するのを待っています。ハンドラーの x は、このコードが含まれる外側のループを表します。
私がやろうとしていることを行うためのより良い方法はありますか? また、これが十分な情報でない場合はお知らせください。
ありがとうございました。
編集:
メインの一番上に戻ってきたシグナルのチェックです。これがあなたが求めていたものだと思います:
if ( signal( SIGINT, signalhandler ) == SIG_ERR ){
return( 1 );
}