我目前正在試圖通過使用信號,在這種情況下,SIGINT來突破accept()和/或write()的等待。我的計劃沒有按預期離開。我如何使用SIGINT來突破accept()或read()的等待?
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);
}
顯示信號處理程序和插座之間關係的代碼。 – deepmax 2013-03-08 20:19:48
我知道signal()的原型說處理程序只能有一個參數,它是'signal'本身。如果我不能通過它,我不知道如何更改處理程序中的'sockfd'套接字。 – nzondlo 2013-03-08 20:29:48