我目前正在尝试通过使用信号(在本例中为 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 用于这段代码所在的外部循环。
有没有更好的方法来做我想做的事情?另外,如果这还不够信息,请告诉我。
谢谢你。
编辑:
这是对信号的检查,它位于 main 的顶部。我想这就是你所要求的:
if ( signal( SIGINT, signalhandler ) == SIG_ERR ){
return( 1 );
}