2016-04-28 2 views
-4

Я изо всех сил пытаюсь реализовать возможность захвата сигналов в процессе с использованием языка C.Захват сигналов в C

Может ли кто-нибудь помочь мне с рабочего примера?

Спасибо.

+0

Что вы пробовали до сих пор? Вы просматривали другие минимальные рабочие примеры, доступные в Интернете? Если да, то какие проблемы вы столкнулись с ними, т. Е. Вы застряли? Прочитали ли вы контрольную страницу? Вот некоторые ресурсы, которые помогут вам начать работу: http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/ и: https://gist.github.com/aspyct/3462238 –

ответ

0

Вам необходимо использовать библиотеку 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; 
} 
+0

Он работает отлично, спасибо! Я новичок в программировании и в Stack Overflow, спасибо за терпение –

+0

'printf()' не является безопасным для асинхронного сигнала. Для прямой печати в обработчике сигнала используйте 'write()'. – alk

+0

'printf()' только для того, чтобы показать, что я захватил сигнал, но как бы вы порекомендовали его? @alk – rafaelcpalmeida

Смежные вопросы