Я изо всех сил пытаюсь реализовать возможность захвата сигналов в процессе с использованием языка C.Захват сигналов в C
Может ли кто-нибудь помочь мне с рабочего примера?
Спасибо.
Я изо всех сил пытаюсь реализовать возможность захвата сигналов в процессе с использованием языка C.Захват сигналов в C
Может ли кто-нибудь помочь мне с рабочего примера?
Спасибо.
Вам необходимо использовать библиотеку signal.h
.
Вот рабочий пример, в котором я захватить SIGINT и напечатать сообщение для STDOUT:
#include<stdio.h>
#include<signal.h>
void sig_handler(int signo)
{
if (signo == SIGINT)
write(0, "Hello\n", 6);
}
int main(void)
{
signal(SIGINT, sig_handler);
// Just to testing purposes
while(1)
sleep(1);
return 0;
}
Он работает отлично, спасибо! Я новичок в программировании и в Stack Overflow, спасибо за терпение –
'printf()' не является безопасным для асинхронного сигнала. Для прямой печати в обработчике сигнала используйте 'write()'. – alk
'printf()' только для того, чтобы показать, что я захватил сигнал, но как бы вы порекомендовали его? @alk – rafaelcpalmeida
Что вы пробовали до сих пор? Вы просматривали другие минимальные рабочие примеры, доступные в Интернете? Если да, то какие проблемы вы столкнулись с ними, т. Е. Вы застряли? Прочитали ли вы контрольную страницу? Вот некоторые ресурсы, которые помогут вам начать работу: http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/ и: https://gist.github.com/aspyct/3462238 –