SIGINT (CTRL + C) yakalamaya çalışıyorum. Kullanıcı CTRL + C yazarken, çocuk işlemini öldüreceğini, ancak baba sürecinin normal şekilde devam etmesini istiyorum. Programımda alt işlemim olduğunda, iyi çalışıyor, ancak alt işlem yapmadığımda "segmentasyon hatası" alıyorum.segmentasyon hatası sinyal işleyicisi sigint
Bunu yapmış:
void sig_handler(int signo);
//========================================
int main()
{
// CTRL + C => SIGINT handler
struct sigaction act;
act.sa_handler = sig_handler;
sigfillset(&act.sa_mask);
act.sa_flags = 0;
// Catch the signal
sigaction(SIGINT, &act, NULL);
...
// done some checks and then fork a child.
}
// SIGINT handler
void sig_handler(int signo)
{
// dont know what to write here
}
Çocuğunuzun işleyişini iptal etmeden önce mevcut işlem kimliğini alın, sonra çocuğunuzu çatallayın ve işlem kimliğini alın, sonra ctrl c'nin ana işlem kimliği için olup olmadığını kontrol edin veya mantığınızı ona göre uygulamayın. – FZE
Segmentasyon hatasıyla hangi kod satırındasınız? –